diff -r 137912d1a556 -r 0f9fc722d255 deviceupdatesui/omadmadapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp --- a/deviceupdatesui/omadmadapters/syncmldm12/src/NSmlDmSettingsAdapter12.cpp Tue Jul 13 03:44:34 2010 +0530 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,4002 +0,0 @@ -/* -* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: DM-settings adapter -* -*/ - - - - -// INCLUDE FILES -#include "NSmlDMSettingsAdapter12.h" -#include "nsmldebug.h" -#include "nsmlconstants.h" -#include "nsmldmconstants.h" -#include "nsmldmiapmatcher.h" -#include "nsmldmauthinfo.h" -#include -#include -#include -#include -#include -#include -#include -#ifndef __WINS__ -// This lowers the unnecessary compiler warning (armv5) to remark. -// "Warning: #174-D: expression has no effect..." is caused by -// DBG_ARGS8 macro in no-debug builds. -#pragma diag_remark 174 -#endif - -const TUint KNSmlDMSettingsAdapterImplUid = 0x10282CE8; - -const TInt KBufSize32 = 32; - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -CNSmlDMSettingsAdapter12* CNSmlDMSettingsAdapter12::NewL( MSmlDmCallback* aDmCallback ) - { - _DBG_FILE("CNSmlDMSettingsAdapter12::NewL(): begin"); - - CNSmlDMSettingsAdapter12* self = NewLC( aDmCallback ); - CleanupStack::Pop(); - - _DBG_FILE("CNSmlDMSettingsAdapter12::NewL(): end"); - return self; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::NewLC( ) -// Loads the CNSmlDMSettingsAdapter12 class and pushes it to clenupstack. -// ----------------------------------------------------------------------------- -CNSmlDMSettingsAdapter12* CNSmlDMSettingsAdapter12::NewLC( MSmlDmCallback* aDmCallback ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::NewLC(): begin" ); - CNSmlDMSettingsAdapter12* self = new ( ELeave ) CNSmlDMSettingsAdapter12( aDmCallback ); - CleanupStack::PushL( self ); - self->iCallBack = aDmCallback; - self->ConstructL(); - self->iLeafType = EDMUnset; - - _DBG_FILE( "CNSmlDMSettingsAdapter12::NewLC(): end" ); - return self; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::CNSmlDMSettingsAdapter() -// Default constructor. -// ----------------------------------------------------------------------------- -CNSmlDMSettingsAdapter12::CNSmlDMSettingsAdapter12( TAny* aEcomArguments) : - CSmlDmAdapter(aEcomArguments ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::CNSmlDMSettingsAdapter(): begin" ); - _DBG_FILE( "CNSmlDMSettingsAdapter12::CNSmlDMSettingsAdapter(): end" ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::~CNSmlDMSettingsAdapter() -// Destructor. -// ----------------------------------------------------------------------------- -CNSmlDMSettingsAdapter12::~CNSmlDMSettingsAdapter12() - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::~CNSmlDMSettingsAdapter(): begin" ); - - delete iField; - delete iURIField; - // Client API Session & Profile - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - // In Case the Buffer isnt cleared - if ( iBuffer) - { - for (TInt val =0; valCount ();val++) - { - delete iBuffer->At(val).iMappingName; - - ClearBuffer ( iBuffer->At(val).iLeafBuf); - delete iBuffer->At(val).iLeafBuf; - } - - iBuffer->Reset (); - delete iBuffer; - } - delete iPortNbr; - iPortBuffer.Reset(); - iPortBuffer.Close(); - iProfileLockBuffer.Reset(); - iProfileLockBuffer.Close(); - - iPrivateApi.Close(); - - iCallBack = 0; - FeatureManager::UnInitializeLib(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::~CNSmlDMSettingsAdapter(): end" ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::ConstructL() -// Second phase constructor. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::ConstructL() - { - iField = HBufC8::NewL( KNSmlMaxURLLength ); - iURIField = NULL; - iSyncSessionOpen = EFalse; - FeatureManager::InitializeLibL(); - // variables used for Buffering - iBufOn = EFalse; - iComplete = EFalse; - iExecutionIndex = -1; - iNewProfile = EFalse; - // initialising iBuffer - iBuffer = new (ELeave) CArrayFixFlat (KNSmlDMGranularity); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::DDFVersionL() -// Returns the DDF version number. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::DDFVersionL( CBufBase& aVersion ) - { - _DBG_FILE( - "CNSmlDMSettingsAdapter12::DDFVersionL(CBufBase& aDDFVersion): begin" ); - aVersion.InsertL( 0, KVersion ); - _DBG_FILE( - "CNSmlDMSettingsAdapter12::DDFVersionL(CBufBase& aDDFVersion): end" ); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::DDFStructureL() -// Fills the DDF structure of the adapter. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::DDFStructureL( MSmlDmDDFObject& aDDF ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DDFStructureL(): begin" ); - - //Making DMAcc as root - - MSmlDmDDFObject* ddfRoot = &aDDF; - MSmlDmDDFObject& nDmDDF = ddfRoot->AddChildObjectL( KNSmlDefDMAcc ); - - TSmlDmAccessTypes *aclTypes = new ( ELeave ) TSmlDmAccessTypes(); - CleanupStack::PushL( aclTypes ); - - // Set Get as acceptable operations - aclTypes->SetGet(); - - nDmDDF.SetDFTitleL( KNSmlDMadapterTitle ); - - FillNodeInfoL( nDmDDF, *aclTypes, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EPermanent, MSmlDmDDFObject::ENode, - KNullDesC8, KNullDesC8, KNullDesC8 ); - - aclTypes->SetAdd(); - // Set rest acceptable operations for data itself - aclTypes->SetReplace(); - aclTypes->SetDelete(); - - TSmlDmAccessTypes aclTypesNoGet; - aclTypesNoGet.SetReplace(); - aclTypesNoGet.SetAdd(); - aclTypesNoGet.SetDelete(); - - TSmlDmAccessTypes aclTypesAR; - aclTypesAR.SetReplace(); - aclTypesAR.SetAdd(); - - TSmlDmAccessTypes aclTypesARG; - aclTypesARG.SetReplace(); - aclTypesARG.SetAdd(); - aclTypesARG.SetGet(); - - TSmlDmAccessTypes aclTypesG; - aclTypesG.SetGet(); - - TSmlDmAccessTypes aclTypesAG; - aclTypesAG.SetGet(); - aclTypesAG.SetAdd(); - - TSmlDmAccessTypes aclTypesAGD; - aclTypesAGD.SetGet(); - aclTypesAGD.SetAdd(); - aclTypesAGD.SetDelete(); - - - MSmlDmDDFObject& nProDDF = nDmDDF.AddChildObjectGroupL(); - FillNodeInfoL( nProDDF, *aclTypes, MSmlDmDDFObject::EZeroOrMore, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNullDesC8, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nAppIdDDF = nProDDF.AddChildObjectL( KNSmlDdfAppId ); // Addr - FillNodeInfoL( nAppIdDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAppIdDescription, KNullDesC8, KMimeType ); - - //PrefConRef - MSmlDmDDFObject& nPrefConRefDDF = nProDDF.AddChildObjectL( KNSmlDdfPrefConRef ); // PrefConRef - FillNodeInfoL( nPrefConRefDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfConRefDescription, KNullDesC8, KMimeType ); - - - - // App Address nodes - MSmlDmDDFObject& nAppAddrDDF = nProDDF.AddChildObjectL( KNSmlDdfAppAddr ); // AppAddr - FillNodeInfoL( nAppAddrDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfAddrDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& rtToAppAddrRef = nAppAddrDDF.AddChildObjectGroupL(); //AppAddr/ - FillNodeInfoL(rtToAppAddrRef,aclTypesG,MSmlDmDDFObject::EOneOrMore, - MSmlDmDDFObject::EDynamic,MSmlDmDDFObject::ENode, - KNSmlDdfAddrDescription,KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAddrForAppAddrDDF = rtToAppAddrRef.AddChildObjectL( KNSmlDdfAddr ); // Addr - FillNodeInfoL( nAddrForAppAddrDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAddrDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nAddrTypeForAppAddrDDF = rtToAppAddrRef.AddChildObjectL( KNSmlDdfAddrType ); // AddrType - FillNodeInfoL( nAddrTypeForAppAddrDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAddrTypeDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nPortForAppAddrDDF = rtToAppAddrRef.AddChildObjectL( KNSmlDdfPort ); // PortNbr - FillNodeInfoL( nPortForAppAddrDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfPortNbrDescription, KNullDesC8, KMimeType ); - - //Runtime port address - MSmlDmDDFObject& nrtToPortDDF = nPortForAppAddrDDF.AddChildObjectGroupL(); // PortNbr - FillNodeInfoL( nrtToPortDDF, aclTypesG, MSmlDmDDFObject::EOneOrMore, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfPortNbrDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nPortNbrToPortDDF = nrtToPortDDF.AddChildObjectL( KNSmlDdfPortNbr ); // PortNbr - FillNodeInfoL( nPortNbrToPortDDF, aclTypesARG, MSmlDmDDFObject::EZeroOrOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EInt, - KNSmlDdfPortNbrDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAuthSchemeDDF = nProDDF.AddChildObjectL( KNSmlDdfAuthScheme ); // AuthPref - FillNodeInfoL( nAuthSchemeDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAuthSchemeDescription, KNullDesC8, KMimeType ); - //APPAUthNodes - - MSmlDmDDFObject& nAppAuthDDF = nProDDF.AddChildObjectL( KNSmlDdfAppAuth ); // AppAuth - FillNodeInfoL( nAppAuthDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfAuthSchemeDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nrtToAppAuthDDF = nAppAuthDDF.AddChildObjectGroupL(); // appauth/ - FillNodeInfoL( nrtToAppAuthDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfAuthSchemeDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAauthLevelDDF = nrtToAppAuthDDF.AddChildObjectL( KNSmlDdfAAuthLevel ); // AAuthLevel - FillNodeInfoL( nAauthLevelDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAuthLevelDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAauthtypeDDF = nrtToAppAuthDDF.AddChildObjectL( KNSmlDdfAAuthType ); // AAuthType - FillNodeInfoL( nAauthtypeDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAddrTypeDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAauthNameDDF = nrtToAppAuthDDF.AddChildObjectL( KNSmlDdfAAuthName ); // AddrType - FillNodeInfoL( nAauthNameDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAuthNameDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nAauthSecretDDF = nrtToAppAuthDDF.AddChildObjectL( KNSmlDdfAAuthSecret ); // AddrType - FillNodeInfoL( nAauthSecretDDF, aclTypesAR, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAuthSecretDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nAauthDataDDF = nrtToAppAuthDDF.AddChildObjectL( KNSmlDdfAAuthData ); // AddrType - FillNodeInfoL( nAauthDataDDF, aclTypesAR, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfAuthDataDescription, KNullDesC8, KMimeType ); - - - MSmlDmDDFObject& nNameDDF = nProDDF.AddChildObjectL( KNSmlDdfName ); // Name - FillNodeInfoL( nNameDDF, aclTypesARG, MSmlDmDDFObject::EZeroOrOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfNameDescription, KNullDesC8, KMimeType ); - - - - MSmlDmDDFObject& nServerIdDDF = nProDDF.AddChildObjectL( KNSmlDdfServerId ); // ServerId - FillNodeInfoL( nServerIdDDF, aclTypesAG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfServerIdDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nextDDF = nProDDF.AddChildObjectL( KNSmlDdfExt ); // Ext - FillNodeInfoL( nextDDF, aclTypesG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::ENode, - KNSmlDdfServerIdDescription, KNullDesC8, KMimeType ); - - MSmlDmDDFObject& nlockedDDF = nextDDF.AddChildObjectL( KNSmlDdfLocked ); // locked - FillNodeInfoL( nlockedDDF, aclTypesARG, MSmlDmDDFObject::EOne, - MSmlDmDDFObject::EDynamic, MSmlDmDDFObject::EChr, - KNSmlDdfServerIdDescription, KNullDesC8, KMimeType ); - - CleanupStack::PopAndDestroy(); //aclTypes - - _DBG_FILE("CNSmlDMSettingsAdapter12::DDFStructureL(): end"); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::UpdateLeafObjectL -// Updates profile leaf object data based on URI. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::UpdateLeafObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aObject, - const TDesC8& /*aType*/, - const TInt aStatusRef ) - { - _DBG_FILE("CNSmlDMSettingsAdapter12::UpdateLeafObjectL(): begin"); - TInt index = -1; - if ( !iBufOn) - { - for (TInt val = 0; valCount (); val++) - { - TPtrC8 firstUri = ParentURI (aURI); - if ( iBuffer->At(val).iMappingName->Compare (firstUri)== 0) - { - index = iExecutionIndex = val; - break; - } - } - } - if ( index >= 0) - AddLeafBufferL (aURI, aObject, aStatusRef); - else - { - TInt parentLUID = GetIntObject( aLUID ); - if( parentLUID < 0 ) - { - if( IsDMAccUriFormatMatchPredefined(aURI) ) - { - parentLUID = ConstructTreeL(aURI); - } - } - if( parentLUID < 0 ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::UpdateLeafObjectL( ): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - - if( parentLUID != iParentLUID ) - { - if( FindProfileIdL( parentLUID ) != EFalse ) - { - iParentLUID = parentLUID; - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - } - SetField( aURI ); - SetURIInProcessL( aURI); - if( !AcceptDMField() ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafObjectL(): KErr field end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); - return; - } - - // Get Database field type - TNSmlDMFieldType fType = GetDMFieldType(); - if ( fType == EWrong ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafObjectL(): EError end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - - TNSmlDMProfileData fData = GetDMField(); - if( fData == ESyncAccepted ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafObjectL(): EError end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - if( NotValidStrLenght( fData, aObject ) ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafObjectL(): KErr length end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject ); - return; - } - //Authentication data leafs to be handled - if ( fData == EAuthenticationRequired || fData == EClientNonce - || fData == EServerNonce ) - { - //Check if replace command and replace data as defined - - TInt replaceStatus = KErrGeneral; - SetAuthInfoL( iParentLUID + KMaxDataSyncID, fData, aObject, replaceStatus ); - if ( replaceStatus == KErrNone ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - } - else if ( replaceStatus == KErrNotFound ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - } - - _DBG_FILE( "CNSmlDMSettingsAdapter12::UpdateLeafObjectL():end" ); - return; - } - - TInt rValue = SetDMFieldDataL( iParentLUID, aObject, fData ); - if ( fData == EProfilePort ) - { - // in case port is updated, save status ref to be used in - // CompleteOutstandingCmdsL - if(rValue==KErrNone) - { - iPortBuffer[iPortBuffer.Count()-1].iPortBufStatusRef = aStatusRef; - } - else if( rValue == KErrOverflow) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ETooLargeObject ); - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - } - } - else if ( fData == EProfileLock && iNewProfile ) - { - if(rValue == KErrNone) - iProfileLockBuffer[iProfileLockBuffer.Count()-1].iProfileLockStatusRef = aStatusRef; - else - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotAllowed); - } - else - { - if( rValue != KErrNone ) - { - if( rValue == KErrNotFound ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - } - else if( rValue == KErrInUse ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EObjectInUse ); - } - else if( rValue == KErrNoMemory ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENoMemory ); - } - else if(rValue == KErrAccessDenied) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotAllowed); - - } - else if ( rValue == KErrArgument) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject); - - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - } - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - } - } - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::UpdateLeafObjectL():end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::DeleteObjectL -// Deletes whole profile or leaf object data acording to aURI. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::DeleteObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - const TInt aStatusRef ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL( ): begin" ); - - if( aURI.Find( KNSmlDdfConRef ) != KErrNotFound ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL(): NOT ALLOWED end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - iLUID = IntLUID( aLUID ); - if(IsProfileLockedL(iLUID)) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL(): NOT ALLOWED end" ); - - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotAllowed ); - return; - } - - - // Check which field going to be handled - SetField( aURI ); - SetURIInProcessL(aURI); - - // Check if valid field - if( !AcceptDMField() ) - { - - // Delete whole profile if aURI called for node - TInt last = aURI.LocateReverse( '/' ); - TInt pos = aURI.Find( KNSmlDefDMAcc ); - if( last - 5 == pos ) - { - - // If called for node means that profile will deleted from database - iLUID = IntLUID( aLUID ); - DBG_ARGS8( _S8("DeleteObjectL: URI %S LUID = %d"), &aURI, iLUID ); - - if( FindProfileIdL( iLUID ) == EFalse ) - { - _DBG_FILE( - "CNSmlDMSettingsAdapter12::DeleteObjectL( ): notfound end"); - - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - else - { - TInt sRet = DeleteProfileL( iLUID + KMaxDataSyncID ); - if ( sRet != KErrNone ) - { - if( sRet == KErrNotFound ) - { - iCallBack->SetStatusL( aStatusRef, - CSmlDmAdapter::ENotFound ); - } - else if( sRet == KErrInUse ) - { - iCallBack->SetStatusL( aStatusRef, - CSmlDmAdapter::EObjectInUse ); - } - else - { - iCallBack->SetStatusL( aStatusRef, - CSmlDmAdapter::EError ); - } - return; - } - else - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL( ): EOk end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - return; - } - } - } - else - { - _DBG_FILE( - "CNSmlDMSettingsAdapter12::DeleteObjectL( ): EInvalidObject end" ); - iCallBack->SetStatusL( aStatusRef,CSmlDmAdapter::EInvalidObject ); - return; - } - }//Delete whole Profile - - iLUID = IntLUID( aLUID ); - if ( iLUID != iParentLUID ) - { - if( FindProfileIdL( iLUID ) == EFalse ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL( ): end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - iParentLUID = iLUID; - } - - if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 ) - { - DeleteDMAuthInfoL( iLUID, EAuthenticationRequired ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - return; - } - else if( iField->Compare( KNSmlDdfClientNonce ) == 0 ) - { - DeleteDMAuthInfoL( iLUID, EClientNonce ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - return; - } - else if( iField->Compare(KNSmlDdfServerNonce) == 0 ) - { - DeleteDMAuthInfoL( iLUID, EServerNonce ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - return; - } - - // Sets default value if not null field - HBufC8* dataObject = HBufC8::NewLC( 15 ); - dataObject->Des().Format( KNullDesC8 ); - - _LIT8(aType, "text/plain"); - iLeafType = EDMDelete; - UpdateLeafObjectL( aURI, aLUID, *dataObject, aType, aStatusRef ); - CleanupStack::PopAndDestroy(); //dataObject - iLeafType = EDMUnset; - - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteObjectL( ): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::FetchLeafObjectL -// Fetches profile leaf object data acordint to aURI. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::FetchLeafObjectL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aType, - const TInt aResultsRef, - const TInt aStatusRef ) - { - - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): begin" ); - DBG_ARGS(_S16( "DM:Fetch aURI - %S - %S"), &aURI, &aLUID ); - - iLUID = IntLUID( aLUID ); - if ( iLUID >= 0 ) - { - if( FindProfileIdL( iLUID ) == EFalse ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - } - else - { - - // Static node feature start - iLUID = -1; - if( IsDMAccUriFormatMatchPredefined(aURI) ) - { - iLUID = ConstructTreeL(aURI); - } - - if (iLUID == -1) - { - _DBG_FILE( "CNSmlDMSettingsAdapter::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - // Static node feature end - } - - // Check which field going to be handled - SetField(aURI); - SetURIInProcessL(aURI); - - // Check if valid field - if( !AcceptDMField() ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): EInvalidObject end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); - return; - } - /*if(iField->Compare(KNSmlDdfExt) == 0) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - CBufBase* extNode = CBufFlat::NewL(128); - CleanupStack::PushL(extNode); - iCallBack->SetResultsL( aResultsRef, *extNode, KNullDesC8 ); - CleanupStack::PopAndDestroy(extNode); - return; - }*/ - - // Get Database field type - TInt fType = GetDMFieldType(); - if ( fType == EWrong ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): EError end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - - TNSmlDMProfileData fieldId = GetDMField(); - if( fieldId == ESyncAccepted ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafObjectL(): EError end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - CBufBase *lObject = CBufFlat::NewL( 128 ); - CleanupStack::PushL( lObject ); - lObject->Reset(); - - CSmlDmAdapter::TError status; - - if ( fType == EStr || fType == EInt || fType == EBin ) - { - // Check for APPId and return w7 - TInt rValue = KErrNone; - /* if( iField->Compare(KNSmlDdfAppId ) ==0 ) - { - status = CSmlDmAdapter::EOk; - lObject->InsertL(lObject->Size(),KNSmlDdfAppIdValue); - - }*/ - - rValue = GetObjectL( iLUID, fieldId, *lObject ); - if( rValue != KErrNone ) - { - if( rValue == KErrNotFound ) - { - status = CSmlDmAdapter::ENotFound; - } - else if( rValue == KErrInUse ) - { - status = CSmlDmAdapter::EObjectInUse; - } - else if( rValue == KErrNoMemory ) - { - status = CSmlDmAdapter::ENoMemory; - } - else - { - status = CSmlDmAdapter::EError; - } - } - else - { - status = CSmlDmAdapter::EOk; - } - } - else - { - CleanupStack::PopAndDestroy(); //lObject - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - return; - } - iCallBack->SetStatusL( aStatusRef, status ); - - if(status==CSmlDmAdapter::EOk) - { - iCallBack->SetResultsL( aResultsRef, *lObject, aType ); - } - - CleanupStack::PopAndDestroy(); //lObject - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CSmlDmSettingsAdapter::ChildURIListL -// Function returns the list of profiles or leafs of the profile -// acording to aURI. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::ChildURIListL( const TDesC8& aURI, - const TDesC8& aLUID, - const CArrayFix& aPreviousURISegmentList, - const TInt aResultsRef, - const TInt aStatusRef ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::ChildURIListL(): begin" ); - CBufBase *currentURISegmentList = CBufFlat::NewL( 128 ); - CleanupStack::PushL( currentURISegmentList ); - - if(( aURI.Match( KDmAccMatch ) != KErrNotFound ) && - (aURI.Match( KDmAccMatch3 ) == KErrNotFound )) - { - // Check if Profile exists - TInt checkLUID = GetIntObject( aLUID ); - if( FindProfileIdL( checkLUID ) ) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAcc ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - iCallBack->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 ); - } - else - { - // Static node feature start - checkLUID = -1; - if( IsDMAccUriFormatMatchPredefined(aURI) ) - { - checkLUID = ConstructTreeL(aURI); - } - - if (checkLUID == -1) - { - _DBG_FILE( "CNSmlDMSettingsAdapter::childURI(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - CleanupStack::PopAndDestroy( ); // currentURISegmentList - _DBG_FILE( "CNSmlDMSettingsAdapter::ChildURIListL(): end" ); - return; - } - else - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAcc ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - iCallBack->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 ); - - } - - - // iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - // Static node feature start end - } - - CleanupStack::PopAndDestroy( ); // currentURISegmentList - _DBG_FILE( "CNSmlDMSettingsAdapter12::ChildURIListL(): end" ); - return; - } - else if(( aURI.Match( KDmAccMatch2 ) != KErrNotFound ) && - (aURI.Match( KDmAccMatch ) == KErrNotFound )) - { - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - RArray profileIdArray; - CleanupClosePushL( profileIdArray ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileIdArray, usageType ); - - for( TInt p = 0; p < profileIdArray.Count(); p++ ) - { - TBool notInList = ETrue; - TInt newline = 0; - TInt ddId = profileIdArray[p] - KMaxDataSyncID; - - while( notInList && newline < aPreviousURISegmentList.Count() ) - { - TInt ppId = GetIntObject( aPreviousURISegmentList.At(newline).iURISegLUID ); - if( ppId == ddId ) - { - notInList = EFalse; - break; - } - newline++; - } - if( notInList ) - { - _LIT8( Kprev, "DMId" ); - TBuf8<7> addNAME(Kprev); // DMIdnnn , nnn = profileid - TInt fixedProfId = profileIdArray[p] - KMaxDataSyncID; //fit to 3 decimal - addNAME.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); - - currentURISegmentList->InsertL( currentURISegmentList->Size(), addNAME ); - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSmlDmSlash ); - DBG_ARGS8( _S8("notInList: Id = %d Name %S"), p, &addNAME ); - - // KNSmlDMStart includes start text for URISeg - TBuf8<20> addURI; // SyncML/DMAcc/DMIdnnn , nnn = profileid - addURI.Append( KNSmlDMStart ); - addURI.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); - - TBuf8<3> addLUID; - addLUID.Num( fixedProfId ); - - // Also added to mapping - iCallBack->SetMappingL( addURI, addLUID ); - } - else - { // Add those in PreviousList which are on database - currentURISegmentList->InsertL( currentURISegmentList->Size(), - aPreviousURISegmentList.At(newline).iURISeg ); - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSmlDmSlash ); -// DBG_ARGS8( _S8("InList: Id = %d Name %S"), newline, -// aPreviousURISegmentList.At(newline).iURISeg ); - } - } - CleanupStack::PopAndDestroy( 1 );//profileIdArray - } - - // AppAddr subtree - else if( ( aURI.Match( KDmAccAppAddrMatch ) != KErrNotFound ) && (aURI.Match( KDmAccPortMatch ) == KErrNotFound ) && (aURI.Match( KDmAccPortFullMatch ) == KErrNotFound )) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KDmAccAppAddrId ); - } - else if(( aURI.Match( KDmAccAppAddrFullMatch ) != KErrNotFound ) && (aURI.Match( KDmAccPortMatch ) == KErrNotFound ) && (aURI.Match( KDmAccPortFullMatch ) == KErrNotFound )) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccAppAddr ); - } - else if(( aURI.Match( KDmAccPortMatch ) != KErrNotFound ) && (aURI.Match( KDmAccPortFullMatch ) == KErrNotFound )) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccPortRT ); - } - else if( aURI.Match( KDmAccPortFullMatch ) != KErrNotFound ) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccport ); - } - - else if(( aURI.Match( KDmAccAppAuthMatch ) != KErrNotFound ) && (aURI.Match( KDmAccAppAuthFullMatch ) == KErrNotFound )) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KDmAccAppAuthNodes ); - } - else if((aURI.Match(KDmAccAppAuthSrvMatch) != KErrNotFound) || (aURI.Match(KDmAccAppAuthCliMatch) != KErrNotFound) || (aURI.Match(KDmAccAppAuthTransMatch) != KErrNotFound)) //|| (aURI.Match(KDmAccAppAuthObexMatch) != KErrNotFound) || (aURI.Match(KDmAccAppAuthHttpMatch) != KErrNotFound)) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccAppAuth ); - } - else if(( aURI.Match( KDmAccAppAuthFullMatch ) != KErrNotFound ) && (aURI.Find( KDmAccAppAuthNodes ) != KErrNotFound)) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccAppAuth ); - } - - else if( aURI.Match( KDmAccExtMatch ) != KErrNotFound ) - { - currentURISegmentList->InsertL( currentURISegmentList->Size(), KSegmDMAccLocked ); - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); - CleanupStack::PopAndDestroy( 1 ); // currentURISegmentList - return; - } - - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk ); - iCallBack->SetResultsL( aResultsRef, *currentURISegmentList, KNullDesC8 ); - CleanupStack::PopAndDestroy(); // currentURISegmentList - _DBG_FILE( "CNSmlDMSettingsAdapter12::ChildURIListL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::AddNodeObjectL -// Adds new DM-settings profile to database -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::AddNodeObjectL( const TDesC8& aURI, - const TDesC8& aParentLUID, - const TInt aStatusRef ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeObjectL(): begin" ); - - if( aParentLUID.Length() > 0 ) - { - iParentLUID = GetIntObject( aParentLUID ); - if( FindProfileIdL( iParentLUID ) != EFalse )// iProfile != NULL) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeObjectL(): EAlreadyExists end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EAlreadyExists ); - return; - } - else - { - TInt ret = iCallBack->RemoveMappingL(KNSmlDMSettingsAdapterImplUid, - GetDynamicDMNodeUri( aURI ), ETrue ); - if(ret != KErrNone) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - } - } - iNewProfile = ETrue; - AddNodeBufferL (aURI, aStatusRef); - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeObjectL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::UpdateLeafObjectL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::UpdateLeafObjectL( const TDesC8&, const TDesC8&, - RWriteStream*&, const TDesC8&, - const TInt ) - { - //Not supported because data streaming is not supported by this adapter. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::FetchLeafObjectSizeL -// This function fetches leaf object and returns its size. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::FetchLeafObjectSizeL( const TDesC8& aURI, - const TDesC8& aLUID, - const TDesC8& aType, - const TInt aResultsRef, - const TInt aStatusRef ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectSizeL() : begin" ); - DBG_ARGS( _S16("DM:Fetch aURI - %S - %S"), &aURI, &aLUID ); - - iLUID = IntLUID( aLUID ); - if ( iLUID >= 0 ) - { - if( FindProfileIdL( iLUID ) == EFalse ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - } - else - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - - // Check which field going to be handled - SetField( aURI ); - SetURIInProcessL (aURI); - - // Check if valid field - if( !AcceptDMField() ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): EInvalidObject end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EInvalidObject ); - return; - } - /*if(aURI.Find( KNSmlDdfExt ) != KErrNotFound) - { - return; - }*/ - - // Get Database field type - TInt fType = GetDMFieldType(); - if ( fType == EWrong ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): EError end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - return; - } - - CBufBase *lObject = CBufFlat::NewL( 128 ); - CleanupStack::PushL( lObject ); - lObject->Reset(); - - if ( fType == EStr || fType == EInt || fType == EBin ) - { - TInt rValue = GetObjectL( iLUID, GetDMField(), *lObject ); - if( lObject->Size() == 0 || rValue != KErrNone ) - { - if( rValue == KErrNotFound ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - } - else if( rValue == KErrInUse ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EObjectInUse ); - } - else if( rValue == KErrNoMemory ) - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENoMemory ); - } - else - { - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EError ); - } - } - } - else - { - CleanupStack::PopAndDestroy();//lObject - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectL(): ENotFound end" ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::ENotFound ); - return; - } - TInt objSizeInBytes = lObject->Size(); - TBuf8<16> stringObjSizeInBytes; - stringObjSizeInBytes.Num( objSizeInBytes ); - - lObject->Reset(); - lObject->InsertL( 0, stringObjSizeInBytes ); - iCallBack->SetResultsL( aResultsRef, *lObject, aType ); - iCallBack->SetStatusL( aStatusRef, CSmlDmAdapter::EOk); - - CleanupStack::PopAndDestroy( 1 ); //lObject - _DBG_FILE( "CNSmlDMSettingsAdapter12::FetchLeafObjectSizeL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::ExecuteCommandL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::ExecuteCommandL( const TDesC8&, const TDesC8&, - const TDesC8&, const TDesC8&, - const TInt ) - { - //Not supported. Command execution via DM settings adapter not possible. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::ExecuteCommandL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::ExecuteCommandL( const TDesC8&, const TDesC8&, - RWriteStream*&, const TDesC8&, - const TInt ) - { - //Not supported. Command execution via DM settings adapter not possible. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::CopyCommandL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::CopyCommandL( const TDesC8&, const TDesC8&, - const TDesC8&, const TDesC8&, - const TDesC8&, TInt ) - { - //Not supported. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::StartAtomicL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::StartAtomicL() - { - //Not supported. Handling Atomic command cycles not supported by the adapter. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::CommitAtomicL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::CommitAtomicL() - { - //Not supported. Handling Atomic command cycles not supported by the adapter. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::RollbackAtomicL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::RollbackAtomicL() - { - //Not supported. Handling Atomic command cycles not supported by the adapter. - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::StreamingSupport() -// Indicates if streaming is supported. -// ----------------------------------------------------------------------------- -TBool CNSmlDMSettingsAdapter12::StreamingSupport( TInt& /*aItemSize*/ ) - { - return EFalse; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::StreamCommittedL() -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::StreamCommittedL() - { - //Not supported. Streaming not supported by the DM settings adapter. - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::CompleteOutstandingCmdsL() -// If buffering used, commands must be executed before returning this function. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::CompleteOutstandingCmdsL() - { - // Check if Buffered - for (int val=0; valCount ();val++) - { - if ( !iBuffer->At(val).iExecuted) - { - TInt count = iBuffer->At(val).iLeafBuf->Count ()-1; - iExecutionIndex = val; - iComplete = ETrue; - ExecuteBufferL (); - } - } - for (TInt i = 0;iSetStatusL( iPortBuffer[i].iPortBufStatusRef, CSmlDmAdapter::EError ); - } - else - { - iCallBack->SetStatusL( iPortBuffer[i].iPortBufStatusRef, CSmlDmAdapter::EOk ); - } - - } - iPortBuffer.Reset(); - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::AcceptDMField -// This function checks if field to be handled is valid. -// ----------------------------------------------------------------------------- -TBool CNSmlDMSettingsAdapter12::AcceptDMField() - { - _DBG_FILE("CNSmlDMSettingsAdapter12::AcceptDMField(): begin"); - - if ( iField->Compare( KNSmlDdfAddrType ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfAddr ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfServerId ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfServerPW ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfClientPW ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfClientNonce ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare( KNSmlDdfName ) == 0 ) - { - return ETrue; - } - - else if ( iField->Compare( KNSmlDdfId ) == 0 ) - { - return ETrue; - } - else if ( iField->Compare(KNSmlDdfAppId) == 0 ) - { - return ETrue; - } - else if ( iField->Compare(KNSmlDdfPrefConRef) == 0 ) - { - return ETrue; - } - else if (iField->Compare(KNSmlDdfAAuthLevel) == 0 ) - { - return ETrue; - } - - else if (iField->Compare(KNSmlDdfAAuthType) == 0 ) - { - return ETrue; - } - else if (iField->Compare(KNSmlDdfAAuthName) == 0 ) - { - return ETrue; - } - - else if (iField->Compare(KNSmlDdfAAuthSecret) == 0 ) - { - return ETrue; - } - else if (iField->Compare(KNSmlDdfAAuthData) == 0 ) - { - return ETrue; - } - else if (iField->Compare(KNSmlDdfLocked) == 0 ) - { - return ETrue; - } - - _DBG_FILE( "CNSmlDMSettingsAdapter12::AcceptDMField(): end" ); - return EFalse; // Not a valid Type - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetDMField -// Matches URI fieldname to DM-database. -// ----------------------------------------------------------------------------- -TNSmlDMProfileData CNSmlDMSettingsAdapter12::GetDMField() - { - - if ( iField->Compare( KNSmlDdfAddrType ) == 0 ) - { - - return EProfileAddrType; - - } - else if ( iField->Compare( KNSmlDdfAddr ) == 0 ) - { - return EProfileURL; - } - else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 ) - { - return EProfilePort; - } - else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 ) - { - return EAuthenticationRequired; - } - else if ( iField->Compare( KNSmlDdfServerId ) == 0 ) - { - return EServerId; - } - else if ( iField->Compare( KNSmlDdfServerPW ) == 0 ) - { - return ESharedSecret; - } - else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 ) - { - return EServerNonce; - } - else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 ) - { - return EProfileDMServerUsername; - } - else if ( iField->Compare( KNSmlDdfClientPW ) == 0 ) - { - return EProfileDMServerPassword; - } - else if ( iField->Compare( KNSmlDdfClientNonce ) == 0 ) - { - return EClientNonce; - } - else if ( iField->Compare( KNSmlDdfName ) == 0 ) - { - return EProfileName; - } - else if ( iField->Compare( KNSmlDdfId ) == 0 ) - { - return EProfileId; - } - - else if ( iField->Compare( KNSmlDdfPrefConRef ) == 0 ) - { - return EProfileIAPId; - } - - else if ( iField->Compare( KNSmlDdfAppId ) == 0 ) - { - return EProfileIAPId; - } - else if ( iField->Compare( KNSmlDdfLocked) == 0 ) - { - return EProfileLock; - } - - else if (iField->Compare(KNSmlDdfAAuthLevel) == 0 ) - { - if(iURIField->Find(KDmAccAppAuthDyn1) != KErrNotFound) - return EPRofileServerCred; - else if (iURIField->Find(KDmAccAppAuthDyn2)!= KErrNotFound) - return EPRofileClientCred; - else if (iURIField->Find(KDmAccAppAuthTransport)!= KErrNotFound) - return EProfileTransport; - } - - else if (iField->Compare(KNSmlDdfAAuthType) == 0 ) - { - return EProfileAAuthType; - } - else if (iField->Compare(KNSmlDdfAAuthName) == 0 ) - { - if(iURIField->Find(KDmAccAppAuthDyn1) != KErrNotFound) - return EProfileName; - else if (iURIField->Find(KDmAccAppAuthDyn2)!= KErrNotFound) - return EProfileDMServerUsername; - else if (iURIField->Find(KDmAccAppAuthTransport)!= KErrNotFound) - { - return ETransportAuthName; - } - - // return ETrue; - } - - else if (iField->Compare(KNSmlDdfAAuthSecret) == 0 ) - { - if(iURIField->Find(KDmAccAppAuthDyn1) != KErrNotFound) - return ESharedSecret; - else if (iURIField->Find(KDmAccAppAuthDyn2)!= KErrNotFound) - return EProfileDMServerPassword; - else if (iURIField->Find(KDmAccAppAuthTransport)!= KErrNotFound) - { - return EProfileTransportPassword; - } - } - else if (iField->Compare(KNSmlDdfAAuthData) == 0 ) - { - if(iURIField->Find(KDmAccAppAuthDyn1) != KErrNotFound) - return EServerNonce; - else if (iURIField->Find(KDmAccAppAuthDyn2)!= KErrNotFound) - return EClientNonce; - else if (iURIField->Find(KDmAccAppAuthTransport)!= KErrNotFound) - return EProfileTransportAuthData; - } - - - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetDMField(): Error" ); - return ESyncAccepted; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetDMFieldType -// Gets field data type. -// ----------------------------------------------------------------------------- -TNSmlDMFieldType CNSmlDMSettingsAdapter12::GetDMFieldType() const - { - if ( iField->Compare( KNSmlDdfAddrType ) == 0 ) - { - return EInt; - } - else if ( iField->Compare( KNSmlDdfAddr ) == 0 ) - { - return EStr; - } - else if ( iField->Compare( KNSmlDdfPortNbr ) == 0 ) - { - return EInt; - } - else if ( iField->Compare( KNSmlDdfAuthScheme ) == 0 ) - { - return EInt; - } - else if ( iField->Compare( KNSmlDdfServerId ) == 0 ) - { - return EStr; - } - else if ( iField->Compare( KNSmlDdfServerPW ) == 0 ) - { - return EStr; - } - else if ( iField->Compare( KNSmlDdfServerNonce ) == 0 ) - { - return EBin; - } - else if ( iField->Compare( KNSmlDdfClientUserName ) == 0 ) - { - return EStr; - } - else if ( iField->Compare( KNSmlDdfClientPW ) == 0 ) - { - return EStr; - } - else if (iField->Compare(KNSmlDdfClientNonce) == 0) - { - return EBin; - } - else if ( iField->Compare( KNSmlDdfName ) == 0 ) - { - return EStr; - } - - else if ( iField->Compare( KNSmlDdfId ) == 0 ) - { - return EInt; - } - else if( iField->Compare(KNSmlDdfAppId ) ==0 ) - { - return EStr; - } - else if ( iField->Compare( KNSmlDdfPrefConRef ) == 0 ) - { - return EInt; - } - else if (iField->Compare(KNSmlDdfAAuthLevel) == 0 ) - { - return EStr; - } - - else if (iField->Compare(KNSmlDdfAAuthType) == 0 ) - { - return EStr; - } - else if (iField->Compare(KNSmlDdfAAuthName) == 0 ) - { - return EStr; - } - - else if (iField->Compare(KNSmlDdfAAuthSecret) == 0 ) - { - return EStr; - } - else if (iField->Compare(KNSmlDdfAAuthData) == 0 ) - { - return EBin; - } - - else if(iField->Compare(KNSmlDdfLocked)==0) - { - return EStr; - } - - - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetDMFieldType(): Error" ); - return EWrong; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::IntLUID -// Returns integer value for a profile LUID. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::IntLUID( const TDesC8& aLUID ) - { - TLex8 lLex( aLUID ); - - if( lLex.Val( iLUID ) == KErrNone ) - { - return iLUID; - } - else - { - return -1; - } - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetIntObject -// Returns integer value for a aObject. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetIntObject( const TDesC8& aObject ) - { - TLex8 lLex( aObject ); - - TInt value = 0; - - if( lLex.Val( value ) != KErrNone ) - { - return KErrNotFound; - } - else - { - return value; - } - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetIntObject16() -// Returns Integer Value for a 16 bit data object. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetIntObject16( const TDesC& aObject ) - { - TLex16 lLex( aObject ); - - TInt value = 0; - - if( lLex.Val( value ) == KErrNone ) - { - return value; - } - else - { - return value; - } - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetIntObjectLC -// Converts integer to HBufC8 type buffer and returns reference to it. -// ----------------------------------------------------------------------------- -TDesC8& CNSmlDMSettingsAdapter12::SetIntObjectLC( const TInt& aObject ) - { - HBufC8* buf = HBufC8::NewLC( 8 ); - TPtr8 ptrBuf = buf->Des(); - - ptrBuf.Num( aObject ); - return *buf; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::NotValidStrLenght -// Checks if data length is valid. -// ----------------------------------------------------------------------------- -TBool CNSmlDMSettingsAdapter12::NotValidStrLenght( const TNSmlDMProfileData& aProfileItem, - const TDesC8& aSource ) - { - TInt lLen = aSource.Length(); - TBool lBool = EFalse; - - switch ( aProfileItem ) - { - case ( EProfileName ) : - { - if( lLen > KNSmlMaxProfileNameLength ) - { - lBool = ETrue; - } - } - break; - - case ( EProfileDMServerUsername ) : - { - if( lLen > KNSmlMaxUsernameLength ) - { - lBool = ETrue; - } - } - break; - - case ( EProfileHttpUsername ) : - case (ETransportAuthName): - { - if( lLen > KNSmlDmMaxHttpAuthUsernameLength ) - { - lBool = ETrue; - } - } - break; - case ( EProfileHttpPassword ) : - case (EProfileTransportPassword): - { - if( lLen > KNSmlDmMaxHttpAuthPasswordLength ) - { - lBool = ETrue; - } - } - break; - case ( EProfileDMServerPassword ) : - { - if( lLen > KNSmlMaxPasswordLength ) - { - lBool = ETrue; - } - } - break; - - case ( ESharedSecret ) : - { - if( lLen > KNSmlDmSharedSecretMaxLength ) - { - lBool = ETrue; - } - } - break; - - case ( EProfileURL ) : - { - if( lLen > KNSmlMaxURLLength ) - { - lBool = ETrue; - } - } - break; - - case ( EServerId ) : - { - if( lLen > KNSmlDmServerIdMaxLength ) - { - lBool = ETrue; - } - } - break; - - case ( EProfileIAPId ) : - { - if( lLen > KNSmlMaxURLLength ) - { - lBool = ETrue; - } - } - break; - - case ( EAuthenticationRequired ) : - case ( EProfileAAuthType ) : - { - if( lLen > 20 ) - { - lBool = ETrue; - } - } - break; - - case ( EProfileId ) : - case ( EProfilePort ) : - case ( EProfileMediumType ) : - case ( EProfileAddrType ) : - - { - if( lLen > 8 ) - { - lBool = ETrue; - } - } - break; - - case ( EServerNonce ) : - case ( EClientNonce ) : - case (EProfileTransportAuthData): - { - lBool = EFalse; - } - break; - case ( EProfileTransport ): - { - lBool = EFalse; - } - break; - case EProfileLock : - { - if(lLen > 6 ) - { - lBool = ETrue; - } - - } - break; - default: - { - lBool = ETrue; - } - } - - return lBool; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetField -// Last element of the URI (after last '/') is returned. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetField( const TDesC8& aSource ) - { - if ( aSource.LocateReverse( KNSmlDMUriSeparator ) == KErrNotFound ) - { - iField->Des().Format( aSource ); - } - else - { - iField->Des().Format( aSource.Mid( aSource.LocateReverse( KNSmlDMUriSeparator ) + 1 ) ); - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetField -// Last element of the URI (after last '/') is returned. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetURIInProcessL( const TDesC8& aSource ) - { - - if( iURIField ) - { - delete iURIField; - iURIField = NULL; - } - iURIField = HBufC8::NewL( aSource.Length() ); - TPtr8 newPortNbr = iURIField->Des(); - newPortNbr.Append( aSource ); - - return KErrNone; - } - - - - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::ConvertTo8LC -// Converts string value to 8-bit and returns reference. -// ----------------------------------------------------------------------------- -TDesC8& CNSmlDMSettingsAdapter12::ConvertTo8LC( const TDesC& aSource ) - { - HBufC8* buf = HBufC8::NewLC( aSource.Length() * 2 ); - TPtr8 bufPtr = buf->Des(); - CnvUtfConverter::ConvertFromUnicodeToUtf8( bufPtr, aSource ); - - return *buf; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::ConvertTo16LC -// Converts string value to 16-bit and returns reference. -// ----------------------------------------------------------------------------- -TDesC16& CNSmlDMSettingsAdapter12::ConvertTo16LC( const TDesC8& aSource) - { - HBufC16* buf16 = HBufC16::NewLC( aSource.Length() ); - TPtr16 bufPtr16 = buf16->Des(); - - CnvUtfConverter::ConvertToUnicodeFromUtf8( bufPtr16, aSource ); - - return *buf16; - } - -// ------------------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetConRefL -// Gets the URI for given aObject (IAP ID). -// ------------------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetConRefL( CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetConRefL() : begin" ); - TInt profIAPid = -1; - TInt apIdResponse = GetProfileIAPIdL( profIAPid ); - if( profIAPid < 0 ) - { - return KErrNone; - } - if( apIdResponse != KErrNone ) - { - return KErrNotFound; - } - CNSmlDMIAPMatcher* apmatch = CNSmlDMIAPMatcher::NewL( iCallBack ); - CleanupStack::PushL( apmatch ); - HBufC8* uri8 = apmatch->URIFromIAPIdL( profIAPid ); - if( uri8 ) - { - CleanupStack::PushL( uri8 ); - aObject.InsertL( aObject.Size(), uri8->Des() ); - CleanupStack::PopAndDestroy(); // uri8 - } - else - { - CleanupStack::PopAndDestroy(); // apMatch - return KErrGeneral; - } - CleanupStack::PopAndDestroy(); // iapMatch - _DBG_FILE( "CNSmlDSSettingsAdapter::GetToNAPIDL() : end" ); - return KErrNone; - } - -// ------------------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetConRefL() -// Set the profile IAP Id value according to given URI. -// ------------------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetConRefL( const TInt aLUID, const TDesC8& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetConRefL() : begin" ); - CNSmlDMIAPMatcher* apmatch = CNSmlDMIAPMatcher::NewL( iCallBack ); - CleanupStack::PushL( apmatch ); - TInt lIAPid = apmatch->IAPIdFromURIL( aObject ); - CleanupStack::PopAndDestroy(); // iapmatch - if(aObject.Length() >0 && lIAPid == KErrNotFound) - { - return KErrGeneral; - } - TInt apIdResponse = SetProfileConnectionPropertyL( aLUID, lIAPid ); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetConRefL() : end" ); - return apIdResponse; - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::ParseUri -// Resolves portnbr (separated with ':') as integer from Uri. -// ------------------------------------------------------------------------------------------------ -TInt CNSmlDMSettingsAdapter12::ParseUri( const TDesC8& aRealURI, TInt& aPort ) - { - TInt offset=0; - //http: - if( aRealURI.Find( KNSmlDMSettingsHTTP )==0 )//http: - { - offset = KNSmlDMSettingsHTTP().Length(); - } - else if( aRealURI.Find( KNSmlDMSettingsHTTPS )==0 )//https: - { - offset = KNSmlDMSettingsHTTPS().Length(); - } - - TBool portFound=EFalse; - ////123.234.345.456:80/syncml - for( TInt i = offset; i < aRealURI.Length(); i++ ) - { - if( aRealURI[i] == KNSmlDMColon )// ':' - { - portFound = ETrue; - offset=i; - } - if( portFound && aRealURI[i] == KNSmlDMUriSeparator ) // '/' - { - aPort = GetIntObject( aRealURI.Mid( (offset + 1), (i - offset-1) ) ); - } - else if ( portFound && i == aRealURI.Length() - 1 ) // last char - { - // port is from offset to the end - aPort = GetIntObject( aRealURI.Right( aRealURI.Length() - offset - 1 ) ); - } - } - - if( aPort != 0 ) - { - return KErrNone; - } - else - { - return KErrNotFound; - } - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::OpenSyncSessionAndDSProfileL -// The function opens the server session and DM profile. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::OpenSyncSessionAndProfileL( const TInt aIntLUID, - TSmlOpenMode aMode ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::OpenSyncSessionAndProfileL(): begin" ); - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - TInt trueLuid = aIntLUID + KMaxDataSyncID; - TInt rValue(KErrNone); - - if(trueLuid!=iCurrentProfile) - { - RArray profileIdArray; - CleanupClosePushL( profileIdArray ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileIdArray, usageType ); - TInt index = profileIdArray.Find( trueLuid ); - CleanupStack::PopAndDestroy(); //profileIdArray - if( index == KErrNotFound ) - { - return KErrNotFound; - } - TRAP( rValue, iProfile.OpenL( iSyncSession, trueLuid, aMode ) ); - iCurrentProfile = trueLuid; - if( rValue != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - } - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::OpenSyncSessionAndProfileL(): end" ); - return rValue; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::FindProfileId -// Function checks if profile can be found. -// ----------------------------------------------------------------------------- -TBool CNSmlDMSettingsAdapter12::FindProfileIdL( const TInt aIntLUID ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FindProfileIdL(): begin" ); - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - - RArray profileList; - CleanupClosePushL( profileList ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileList, usageType ); - if( profileList.Count() == 0 ) - { - CleanupStack::PopAndDestroy(); //profileList - return EFalse; - } - TInt item = profileList.Find( aIntLUID + KMaxDataSyncID ); - CleanupStack::PopAndDestroy(); //profileList - if( item != KErrNotFound ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::FindProfileIdL(): end" ); - return ETrue; - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::FindProfileIdL(): end" ); - return EFalse; - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::IsServerIDExistL -// Function checks if serverid exist. -// ----------------------------------------------------------------------------- -TBool CNSmlDMSettingsAdapter12::IsServerIDExistL( const TDesC8& aServerid ) -{ - _DBG_FILE( "CNSmlDMSettingsAdapter12::IsServerIDExistL(): begin" ); - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - TBool ret(EFalse); - RArray profileList; - CleanupClosePushL( profileList ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileList, usageType ); - TInt count = profileList.Count(); - if( count > 0 ) - { - for(TInt i =0; i< count; i++) - { - TInt pid = i + KMaxDataSyncID; - TInt index = profileList.Find(pid ); - if( index >= i ) - { - TInt rValue(KErrNone); - RSyncMLDevManProfile profile; - TRAP( rValue, profile.OpenL( iSyncSession, pid, ESmlOpenRead ) ); - if( rValue == KErrNone ) - { - CleanupClosePushL(profile); - if(((aServerid.Compare(profile.ServerId())) == 0) && - ((profile.ServerId()).Length() == aServerid.Length())) - { - ret = ETrue; - CleanupStack::PopAndDestroy(&profile);//profile - break; - } - CleanupStack::PopAndDestroy(&profile);//profile - } - } - } - } - CleanupStack::PopAndDestroy(); //profileList - _DBG_FILE( "CNSmlDMSettingsAdapter12::IsServerIDExistL(): end" ); - return ret; - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::CreateNewProfileL -// The function creates new DM profile via client API. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::CreateNewProfileL( TInt& aPID ) - { - _DBG_FILE("CNSmlDMSettingsAdapter12::CreateNewProfileL(): begin"); - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - TRAPD( value1, iProfile.CreateL( iSyncSession ) ); - if( value1 != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - return value1; - } - - TRAPD( value2, iProfile.UpdateL() ); - if( value2 != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - return value2; - } - - aPID = iProfile.Identifier(); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::CreateNewProfileL(): end" ); - return KErrNone; - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileServerURIL() -// The function sets the server URL for a profile. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileServerURIL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileServerURIL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iProfile.ListConnectionsL( transportIdArray ); - if( transportIdArray.Count() == 0 ) - { - CleanupStack::PopAndDestroy();//transportIdArray - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - - TInt newPort(0); - - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, transportIdArray[0] ); - - if(ParseUri(aObj,newPort)==KErrNotFound) - { - TInt port = 0; - ParseUri(conn.ServerURI(),port); - if(port==0) - { - port = 80; - } - - TBuf8<5> buf; - buf.Num( port ); - - TInt totalSize = aObj.Length() + buf.Length() + 1; - HBufC8* newServerURI = HBufC8::NewLC( totalSize ); - SetPortNrToAddrStr( aObj, newServerURI, buf ); - conn.SetServerURIL( *newServerURI ); - conn.UpdateL(); - CleanupStack::PopAndDestroy( newServerURI ); - } - else - { - conn.SetServerURIL( aObj ); - conn.UpdateL(); - } - - - iProfile.UpdateL(); - - CleanupStack::PopAndDestroy( 2 ); //transportIdArray, conn - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileServerURIL(): end" ); - return KErrNone; - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileDisplayNameL() -// The function sets the display name for a profile. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileDisplayNameL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileDisplayNameL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - iProfile.SetDisplayNameL( ConvertTo16LC( aObj ) ); - iProfile.UpdateL(); - CleanupStack::PopAndDestroy(); //ConvertTo16LC - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileDisplayNameL(): end" ); - return KErrNone; - } -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::IsProfileLockedL() -// The function to tell whether the profile is locked -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::IsProfileLockedL(const TInt aPID) -{ - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileDisplayNameL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenRead ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - - retVal=iProfile.ProfileLocked(EFalse, EFalse); - iCurrentProfile = 0; - iProfile.Close(); - if(retVal) - { - /* CRepository* centrep = NULL; - TRAPD( err, centrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys) ); - TInt IsPrfoileEditable = 0; - if(!err) - centrep->Get( KDevOverrideProfileLock, IsPrfoileEditable ); - delete centrep; - if (!IsPrfoileEditable) - retVal= KErrAccessDenied; - else - retVal= KErrNone;*/ - retVal= KErrAccessDenied; - } - - - - return retVal; - -} - - - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileLockL() -// The function to setor reset the profile lock. -// ----------------------------------------------------------------------------- - -TInt CNSmlDMSettingsAdapter12::SetProfileLockL( const TInt aPID, TInt aLockValue) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileLockL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - - iProfile.ProfileLocked(ETrue, aLockValue ); - iProfile.UpdateL(); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileLockL(): end" ); - return KErrNone; - } - - - - - - - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileHttpUserNameL -// The function sets the profile http/network name. -// ----------------------------------------------------------------------------- - -TInt CNSmlDMSettingsAdapter12::SetProfileHttpUserNameL( const TInt aPID, const TDesC8& aObj ) -{ - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - - RSyncMLConnection connection; - TBuf8 key; - RArray connIdArray; - CleanupClosePushL( connIdArray ); - iProfile.ListConnectionsL( connIdArray ); - if( connIdArray.Count() == 1 ) - { - - connection.OpenL( iProfile, KUidNSmlMediumTypeInternet.iUid ); - CleanupClosePushL( connection ); - - connection.SetPropertyL( KNSmlHTTPAuth, KNSmlTrueVal ); - connection.SetPropertyL( KNSmlHTTPUsername, aObj ); - connection.UpdateL(); - CleanupStack::PopAndDestroy( ); - } - else - { - connection.SetPropertyL( KNSmlHTTPAuth, KNSmlFalseVal ); - connection.UpdateL(); - } - - - CleanupStack::PopAndDestroy( ); - - return retVal; - -} - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileUserNameL -// The function sets the profile user name. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileUserNameL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileUserNameL(): begin" ); - TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - iProfile.SetUserNameL( aObj ); - iProfile.UpdateL(); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileUserNameL(): end" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileProtocolVersionL -// The function sets the protocol version to be supported. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileProtocolVersionL( const TInt aPID, - const TDesC8& ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileProtocolVersionL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - //The syncSession to Sync server is open. - TSmlProtocolVersion protocol = ESmlVersion1_2; - iProfile.SetProtocolVersionL( protocol ); - TRAPD( iError, iProfile.UpdateL() ); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileProtocolVersionL(): begin" ); - return iError; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileServerIdL -// The function sets the profile ServerId value. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileServerIdL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE("CNSmlDMSettingsAdapter12::SetProfileServerIdL(): begin"); - TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - iProfile.SetServerIdL( aObj ); - TRAP(retVal,iProfile.UpdateL() ); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileServerIdL(): end" ); - return retVal; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileServerPasswordL -// The function sets the profile server password. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileServerPasswordL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileServerPasswordL(): begin" ); - TInt retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - iProfile.SetServerPasswordL( aObj ); - iProfile.UpdateL(); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileServerPasswordL(): end" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileHttpPasswordL -// The function sets the profile network/http password. -// ----------------------------------------------------------------------------- - - - TInt CNSmlDMSettingsAdapter12::SetProfileHttpPasswordL( const TInt aPID, const TDesC8& aObj ) - { - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - - RSyncMLConnection connection; - TBuf8 key; - RArray connIdArray; - CleanupClosePushL( connIdArray ); - iProfile.ListConnectionsL( connIdArray ); - if( connIdArray.Count() == 1 ) - { - - connection.OpenL( iProfile, KUidNSmlMediumTypeInternet.iUid ); - CleanupClosePushL( connection ); - - connection.SetPropertyL( KNSmlHTTPAuth, KNSmlTrueVal ); - connection.SetPropertyL( KNSmlHTTPPassword, aObj ); - connection.UpdateL(); - CleanupStack::PopAndDestroy( ); - } - else - { - // connection.SetPropertyL( KNSmlHTTPAuth, KNSmlFalseVal ); - connection.UpdateL(); - } - - - CleanupStack::PopAndDestroy( ); - - return retVal; - - - - } - - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfilePasswordL -// The function sets the profile password. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfilePasswordL( const TInt aPID, - const TDesC8& aObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfilePasswordL(): begin" ); - TInt retVal = KErrNone; - retVal = OpenSyncSessionAndProfileL( aPID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - iProfile.SetPasswordL( aObj ); - iProfile.UpdateL(); - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfilePasswordL(): begin" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileConnectionPropertyL -// This function sets the profile IAP id. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileConnectionPropertyL( const TInt aLUID, - const TInt aIAPid ) - { - TInt retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - RArray connIdArray; - CleanupClosePushL( connIdArray ); - iProfile.ListConnectionsL( connIdArray ); - if( connIdArray.Count() == 1 ) - { - RSyncMLTransport transport; - CleanupClosePushL( transport ); - transport.OpenL( iSyncSession, connIdArray[0] ); - const CSyncMLTransportPropertiesArray& props = transport.Properties(); - TInt index = props.Find( KNSmlIAPId ); - if( index > 0 ) - { - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, connIdArray[0] ); - HBufC8* apIdBuffer = HBufC8::NewLC( 4 ); - TPtr8 ptrIapIdBuf = apIdBuffer->Des(); - ptrIapIdBuf.Num( aIAPid ); - conn.SetPropertyL( KNSmlIAPId, ptrIapIdBuf ); - conn.UpdateL(); - CleanupStack::PopAndDestroy( 2 ); //conn, apIdBuffer - retVal = KErrNone; - } - else - { - retVal = KErrNotFound; - } - CleanupStack::PopAndDestroy( 1 ); //transport - } - else - { - retVal = KErrNotFound; - } - iCurrentProfile = 0; - iProfile.Close(); - CleanupStack::PopAndDestroy(); //connIdArray - return retVal; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::DeleteProfileL -// The function deleted the profile from DM database. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::DeleteProfileL( const TInt aPID ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteProfileL(): begin" ); - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - - RArray profileIdArray; - CleanupClosePushL( profileIdArray ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileIdArray, usageType ); - TInt index = profileIdArray.Find( aPID ); - if ( index == KErrNotFound ) - { - //No match - CleanupStack::PopAndDestroy();//profileIdArray - return KErrNotFound; - } - iSyncSession.DeleteProfileL( aPID ); - iSyncSession.Close(); - iSyncSessionOpen = EFalse; - CleanupStack::PopAndDestroy();//profileIdArray - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteProfileL(): end" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetObjectL -// The function checks which leaf data to be fetched. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetObjectL( TInt aLUID, TNSmlDMProfileData aDMField, - CBufBase& aObject ) - { - TInt retVal = KErrNone; - if( iField->Compare(KNSmlDdfAppId ) ==0 ) - { - aObject.InsertL(aObject.Size(),KNSmlDdfAppIdValue); - return retVal; - - } - - retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenRead ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - switch ( aDMField ) - { - case ( EProfileName ) : - { - GetProfileNameL( aObject ); - } - break; - - case ( EProfileDMServerUsername ) : - { - GetProfileUserNameL( aObject ); - } - break; - - case ( EProfileURL ) : - { - GetProfileServerURLL( aObject ); - TInt port(0); - if(ParseUri(aObject.Ptr(0),port)==KErrNone) - { - HBufC8* addr = aObject.Ptr(0).AllocLC(); - aObject.Reset(); - TInt portStart = addr->LocateReverse(KNSmlDMColon); - aObject.InsertL(aObject.Size(),addr->Left(portStart)); - - TInt portLen=addr->Mid(portStart).Locate(KNSmlDMUriSeparator); - if(portLen!=KErrNotFound) - { - aObject.InsertL(aObject.Size(),addr->Mid(portStart+portLen)); - } - - CleanupStack::PopAndDestroy(); //addr - } - } - break; - - case ( EServerId ) : - { - GetServerIdL( aObject ); - } - break; - - case ( EProfileIAPId ) : - { - retVal = GetConRefL( aObject ); - } - break; - - case ( EProfilePort ) : - { - GetProfileServerURLL( aObject ); - if ( aObject.Size() == 0 ) - { - retVal = KErrNone; - break; - } - GetProfilePortNumberL ( aObject ); - } - break; - - case ( EProfileDMServerPassword ) : - { - retVal = EInvalidObject; - } - break; - - case ( ESharedSecret ) : - {//ServerPW - retVal = EInvalidObject; - } - break; - case ( EProfileId ) : - break; - case ( EProfileAddrType ) : - { - aObject.InsertL(aObject.Size(),KNSmlAddrtype); - } - break; - case (EProfileHttpUsername ): - { - retVal = GetHttpUsernameL(aObject); - } - break; - case (EPRofileServerCred) : - { - aObject.InsertL(aObject.Size(),KDmAccAppAuthLevelSrv); - - } - break; - case (EPRofileClientCred) : - { - aObject.InsertL(aObject.Size(),KDmAccAppAuthLevelCli); - } - break; - - case (ETransportAuthName) : - { - TInt mediumType= ENone; - GetProfileConnectiontypeL( mediumType ); - if( mediumType == EHttp) - { - retVal = GetHttpUsernameL(aObject); - } - else if(mediumType == EObex) - { - aObject.InsertL(aObject.Size(),KNSmlDMNullDesc8); - } - - } - break; - - - case (EProfileTransport) : - { - TInt mediumType= ENone; - GetProfileConnectiontypeL( mediumType ); - if( mediumType == EHttp) - { - aObject.InsertL(aObject.Size(),KDmAccAppAuthLevelHttp); - } - else if(mediumType == EObex) - { - aObject.InsertL(aObject.Size(),KDmAccAppAuthLevelObx); - } - - } - - break; - case ( EAuthenticationRequired ) : - case ( EProfileAAuthType ): - case ( EServerNonce ) : - case ( EClientNonce ) : - { - retVal = GetDMAuthInfoL( aLUID, aDMField, aObject ); - } - break; - - case EProfileLock : - { - - TBool isProfileLocked = iProfile.ProfileLocked(EFalse, EFalse); - if(isProfileLocked) - { - aObject.InsertL(aObject.Size(),KDmProfileLocked); - } - else - { - aObject.InsertL(aObject.Size(),KDmProfileUnLocked); - } - - } - break; - default: - { - User::Panic( KNSmlIndexOutOfBoundStr, KNSmlPanicIndexOutOfBound ); - } - } - iCurrentProfile = 0; - iProfile.Close(); - return retVal; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL() -// The function sets the profile port number. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL( const TInt aLUID, - const TDesC8& aPort ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL(): begin" ); - TInt retVal = KErrNone; - - if( iPortNbr ) - { - delete iPortNbr; - iPortNbr = NULL; - } - iPortNbr = HBufC8::NewL( aPort.Length() ); - TPtr8 newPortNbr = iPortNbr->Des(); - newPortNbr.Append( aPort ); - - retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL(): end" ); - return retVal; - } - - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iProfile.ListConnectionsL( transportIdArray ); - - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, transportIdArray[0] ); - - HBufC8* serverURI = conn.ServerURI().AllocLC(); - if( serverURI->Length() == 0 ) - { - iCurrentProfile = 0; - iProfile.Close(); - CleanupStack::PopAndDestroy( 3 ); //transportIdArray, conn, serverURI - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL(): end" ); - return retVal; - } - TInt totalSize = serverURI->Size() + newPortNbr.Size() + 1; - HBufC8* newServerURI = HBufC8::NewL( totalSize ); - CleanupStack::PushL( newServerURI ); - SetPortNrToAddrStr( *serverURI, newServerURI, newPortNbr ); - - conn.SetServerURIL( *newServerURI ); - conn.UpdateL(); - - CleanupStack::PopAndDestroy( 4 ); //transportIdArray, conn, serverURI, newServerURI - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileConnectionPortNrL(): end" ); - return retVal; - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::SetPortNrToAddrStr -// Sets a portnbr (separated with ':') to profile server URI. -// ------------------------------------------------------------------------------------------------ -void CNSmlDMSettingsAdapter12::SetPortNrToAddrStr( const TDesC8& aSrvURI, HBufC8* aNewURI, - const TDesC8& aPort ) - { - TInt offset=0; - if( aSrvURI.Find( KNSmlDMSettingsHTTP ) == 0 )//http:// - { - offset = KNSmlDMSettingsHTTP().Length(); - } - else if( aSrvURI.Find( KNSmlDMSettingsHTTPS ) == 0 )//https:// - { - offset = KNSmlDMSettingsHTTPS().Length(); - } - TInt portStart = -1; - TInt separatorPos = aSrvURI.Length(); - TInt i = 0; - for( i = offset; i < aSrvURI.Length(); i++ ) - { - if( aSrvURI[i] == KNSmlDMColon )// ':' - { - portStart = i; - } - if( aSrvURI[i] == KNSmlDMUriSeparator )// '/' - { - separatorPos = i; - break; - } - } - - TPtr8 ptrNewSrvURI = aNewURI->Des(); - if( portStart < 0 && separatorPos > 0 && iLeafType != EDMDelete ) - { - ptrNewSrvURI.Append( aSrvURI.Left( separatorPos ) );//http://123.234.345.456 - ptrNewSrvURI.Append( KNSmlDMColon ); - ptrNewSrvURI.Append( aPort ); - ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) ); - } - else if ( portStart > 0 && separatorPos > 0 && iLeafType != EDMDelete ) - { - ptrNewSrvURI.Append( aSrvURI.Left( portStart + 1 ) );//123.234.345.456: - ptrNewSrvURI.Append( aPort );//123.234.345.456:xx(x) - ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) ); - } - else if ( portStart > 0 && iLeafType == EDMDelete ) //delete port number from uri - { - ptrNewSrvURI.Append( aSrvURI.Left( portStart ) );//123.234.345.456 - ptrNewSrvURI.Append( aSrvURI.Right( aSrvURI.Length() - separatorPos ) ); - } - else - { - ptrNewSrvURI.Append( aSrvURI ); - } - return; - } - -// ------------------------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::SetDMFieldDataL -// Selects and Sets value to a field based on field id got from URI. -// ------------------------------------------------------------------------------------------------ -TInt CNSmlDMSettingsAdapter12::SetDMFieldDataL( const TInt aLUID, const TDesC8& aObject, - const TNSmlDMProfileData aField ) - { - TInt rValue = KErrGeneral; - TInt lockvalue =0; - if(aField != EProfileLock) - { - rValue=IsProfileLockedL(aLUID); - if (rValue!= KErrNone) - { - return rValue; - } - - } - else if (aField == EProfileLock) - { - if (! iNewProfile) - { - lockvalue =0; - if(aObject.Length()> 1) - { - rValue = KErrArgument; - return rValue; - } - lockvalue = GetIntObject(aObject); - if(lockvalue != 0 && lockvalue != 1) - { - //lockvalue = 0; - rValue = KErrArgument; - return rValue; - } - rValue = SetProfileLockL(aLUID , lockvalue); - return rValue; - } - - } - - switch ( aField ) - { - case ( EProfileURL ) : - { - rValue = SetProfileServerURIL( aLUID, aObject ); - } - break; - case ( EServerId ) : - { - rValue = SetProfileServerIdL( aLUID, aObject ); - } - break; - case ( ESharedSecret ) : - { - rValue = SetProfileServerPasswordL( aLUID, aObject ); - } - break; - case ( EProfileDMServerUsername ) : - { - rValue = SetProfileUserNameL( aLUID, aObject ); - } - break; - case ( EProfileDMServerPassword ) : - { - rValue = SetProfilePasswordL( aLUID, aObject ); - } - break; - case ( EProfileName ) : - { - rValue = SetProfileDisplayNameL( aLUID, aObject ); - } - break; - case ( EProfileIAPId ) : - { - rValue = SetConRefL( aLUID, aObject ); - } - break; - case ( ETransportAuthName ): - { - OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite ); - TInt mediumType = ENone; - GetProfileConnectiontypeL( mediumType ); - if( mediumType == EHttp) - { - rValue = SetProfileHttpUserNameL ( aLUID, aObject ); - } - else if(mediumType == EObex) - { - rValue = KErrNone; - - } - - - //break; - } - break; - case ( EProfileTransportPassword ): - { - TInt mediumType = ENone; - OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite ); - GetProfileConnectiontypeL( mediumType ); - if( mediumType == EHttp) - { - rValue = SetProfileHttpPasswordL ( aLUID, aObject ); - } - else if(mediumType == EObex) - { - rValue = KErrNone; - - } - } - break; - case (EProfileTransportAuthData) : - { - rValue = KErrNone; - } - break; - - case ( EProfileHttpUsername ) : - { - rValue = SetProfileHttpUserNameL ( aLUID, aObject ); - } - break; - case ( EProfileHttpPassword ) : - { - rValue = SetProfileHttpPasswordL ( aLUID, aObject ); - } - break; - case ( EProfileId ) : - { - } - break; - case ( EProfilePort ) : - { - if(aObject.Size()<=5) - { - TInt port = GetIntObject(aObject); - if( port > KPortMinSize && port < KPortMaxSize ) - { - TPortBuffer element; - element.iPortBuf=aObject; - element.iPortBufLUID = aLUID; - iPortBuffer.Append(element); - rValue=KErrNone; - } - else - { - if (port <= KPortMinSize ) - rValue = KErrUnderflow; - else - rValue=KErrOverflow; - } - } - else - { - rValue=KErrOverflow; - } - // save information of the port - } - break; - - case ( EProfileAddrType ) : - { - if (aObject.Match(KNSmlAddrtype)!=KErrNotFound) - rValue=KErrNone; - - } - break; - - - case ( EProfileMediumType ) : - { - if ( iLeafType == EDMDelete ) - { - return KErrNone; - } - iObject = GetIntObject( aObject ); - if(iObject<0) - { - iObject = EHttp; - } - rValue = SetProfileAddrTypeL( aLUID, iObject ); - } - break; - case ( EProfileTransport) : - { - if (aObject.Match(KDmAccAppAuthLevelHttp)!=KErrNotFound) - { - iObject = EHttp; - } - else if (aObject.Match(KDmAccAppAuthLevelObx)!=KErrNotFound) - { - iObject = EObex; - } - rValue = SetProfileAddrTypeL( aLUID, iObject ); - } - break; - case ( EAuthenticationRequired ) : - case ( EClientNonce ) : - case ( EServerNonce ) : - break; - case ( EProfileLock ) : - lockvalue =0; - lockvalue = GetIntObject(aObject); - if(lockvalue != 0 && lockvalue != 1) - lockvalue = 0; - - TLockBuffer element; - element.iProfileLock=lockvalue; - element.iProfileLockLUID = aLUID; - iProfileLockBuffer.Append(element); - rValue=KErrNone; - - - // rValue = SetProfileLock(aLUID , lockvalue); - break; - default: - rValue = KErrNotSupported; - } - return rValue; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::FillNodeInfoL -// The function fills the node or leaf information. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::FillNodeInfoL( MSmlDmDDFObject& aNode, - TSmlDmAccessTypes aAccTypes, - MSmlDmDDFObject::TOccurence aOccurrence, - MSmlDmDDFObject::TScope aScope, - MSmlDmDDFObject::TDFFormat aFormat, - const TDesC8& aDescription, - const TDesC8& aDefaultValue, - const TDesC8& aMimeType ) - { - aNode.AddDFTypeMimeTypeL( aMimeType ); - aNode.SetAccessTypesL( aAccTypes ); - aNode.SetDescriptionL( aDescription ); - aNode.SetOccurenceL( aOccurrence ); - aNode.SetDefaultValueL( aDefaultValue ); - aNode.SetScopeL( aScope ); - aNode.SetDFFormatL( aFormat ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetDMAuthInfoL -// This function gets authentication data from private API. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetDMAuthInfoL( const TInt aLUID, - const TNSmlDMProfileData aField, - CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetDMAuthInfoL(): begin" ); - - CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo; - CleanupStack::PushL( authInfo ); - - authInfo->iProfileId = aLUID + KMaxDataSyncID; - iPrivateApi.OpenL(); - TInt ret = KErrNone; - - TRAPD(err,iPrivateApi.GetDMAuthInfoL( *authInfo )); - - if(err==KErrNone) - { - if ( aField == EServerNonce ) - { - aObject.InsertL( aObject.Size(), *authInfo->iServerNonce ); - } - else if ( aField == EClientNonce ) - { - aObject.InsertL( aObject.Size(), *authInfo->iClientNonce ); - } - else if (( aField == EAuthenticationRequired ) || (aField == EProfileAAuthType)) - { - TUint authPref = authInfo->iAuthPref; - /*if( authPref == ENoAuth ) - { - aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefNoAuth ); - }*/ - if( authPref == EBasic ) - { - if(aField == EAuthenticationRequired) - { - aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefBasic ); - } - else - { - aObject.InsertL( aObject.Size(), KNSmlDMAuthTypeBasic ); - } - - } - else if( authPref == EMD5 ) - { - if(aField == EAuthenticationRequired) - { - aObject.InsertL( aObject.Size(), KNSmlDMAuthPrefMD5 ); - } - else - { - aObject.InsertL( aObject.Size(), KNSmlDMAuthTypeMD5 ); - } - - } - else - { - aObject.InsertL( aObject.Size(), KNullDesC8 ); - } - } - } - iPrivateApi.Close(); - CleanupStack::PopAndDestroy(authInfo); - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetDMAuthInfoL(): end" ); - return ret; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::DeleteDMAuthInfoL -// This function resets the authentication data. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::DeleteDMAuthInfoL( const TInt aLUID, - const TNSmlDMProfileData aField ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteDMAuthInfoL(): begin" ); - CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo;; - CleanupStack::PushL( authInfo ); - authInfo->iProfileId = aLUID; - iPrivateApi.OpenL(); - iPrivateApi.GetDMAuthInfoL( *authInfo ); - if( aField == EServerNonce ) - { - authInfo->iServerNonce->Des().Delete( 0, authInfo->iServerNonce->Des().Size() ); - authInfo->iServerNonce->Des().Insert( 0, KNullDesC8 ); - } - else if( aField == EClientNonce ) - { - authInfo->iClientNonce->Des().Delete( 0, authInfo->iClientNonce->Des().Size() ); - authInfo->iClientNonce->Des().Insert( 0, KNullDesC8 ); - } - else if( aField == EAuthenticationRequired ) - { - authInfo->iAuthPref = 0; - } - iPrivateApi.SetDMAuthInfoL( *authInfo ); - iPrivateApi.Close(); - CleanupStack::PopAndDestroy(authInfo); - _DBG_FILE( "CNSmlDMSettingsAdapter12::DeleteDMAuthInfoL(): end" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetProfileAddrTypeL -// This function sets the AddrType value. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::SetProfileAddrTypeL( const TInt aLUID, - const TInt aIntObj ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileAddrTypeL(): begin" ); - TInt retVal = OpenSyncSessionAndProfileL( aLUID, ESmlOpenReadWrite ); - if( retVal != KErrNone ) - { - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileAddrTypeL(): end" ); - return retVal; - } - TInt mediumType = ENone; - GetMediumTypeL( aIntObj, mediumType ); - if( mediumType == ENone ) - { - iCurrentProfile = 0; - iProfile.Close(); - return KErrGeneral; - } - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iProfile.ListConnectionsL( transportIdArray ); - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, transportIdArray[0] ); - HBufC8* sURI = conn.ServerURI().AllocLC(); - if(mediumType!=transportIdArray[0]) - { - if ( !FeatureManager::FeatureSupported( KFeatureIdSyncMlDmObex ) ) - { - CleanupStack::PopAndDestroy( 3 );//transportIdArray, conn, sURI - return EInvalidObject; - } - else - { - conn.CreateL(iProfile,mediumType); - } - } - conn.SetServerURIL( *sURI ); - conn.UpdateL(); - CleanupStack::PopAndDestroy( 3 );//transportIdArray, conn, sURI - iCurrentProfile = 0; - iProfile.Close(); - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetProfileAddrTypeL(): end" ); - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetHttpUsernameL -// This function gets the httpuser value. -// ----------------------------------------------------------------------------- - - -TInt CNSmlDMSettingsAdapter12::GetHttpUsernameL( CBufBase& aObject ) - { - - TInt retVal = KErrNone; - TBuf8 key; - TInt intValue; - - RArray connIdArray; - CleanupClosePushL( connIdArray ); - iProfile.ListConnectionsL( connIdArray ); - if( connIdArray.Count() == 1 ) - { - RSyncMLTransport transport; - CleanupClosePushL( transport ); - transport.OpenL( iSyncSession, connIdArray[0] ); - const CSyncMLTransportPropertiesArray& arr = transport.Properties(); - const TSyncMLTransportPropertyInfo& info = arr.At( EPropertyHttpUsed ); - key = info.iName; - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, connIdArray[0] ); - HBufC8* value = conn.GetPropertyL( key ).AllocLC(); - intValue = GetIntObject( *value ); - CleanupStack::PopAndDestroy( ); //value - if ( intValue == 1 ) - { - retVal = KErrNone; - const TSyncMLTransportPropertyInfo& info2 = arr.At( EPropertyHttpUserName ); - key= info2.iName; - HBufC8* value = conn.GetPropertyL( key ).AllocLC(); - aObject.InsertL(aObject.Size(),value->Des()); - CleanupStack::PopAndDestroy( ); //value - } - else - { - retVal = KErrNotFound; - } - CleanupStack::PopAndDestroy( 2 ); // conn, transport - } - CleanupStack::PopAndDestroy( ); //connIdArray - - return retVal; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfileConnectiontypeL -// The function gets the profile medium type. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetProfileConnectiontypeL( TInt& aMediumTYpe ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileConnectiontypeL(): begin" ); - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iProfile.ListConnectionsL( transportIdArray ); - TInt transportItems = transportIdArray.Count(); - if( transportItems == 0 ) - { - //No matching items - CleanupStack::PopAndDestroy(); //transportIdArray - return KErrGeneral; - } - else if( transportItems > 1 ) - { - //Error case : against specification - CleanupStack::PopAndDestroy(); //transportIdArray - return KErrGeneral; - } - aMediumTYpe = 0; - if ( transportIdArray[0] == KUidNSmlMediumTypeInternet.iUid ) - { - aMediumTYpe = 1; //EHttp; - } - else if ( transportIdArray[0] == KUidNSmlMediumTypeBluetooth.iUid || - transportIdArray[0] == KUidNSmlMediumTypeUSB.iUid || - transportIdArray[0] == KUidNSmlMediumTypeIrDA.iUid ) - { - aMediumTYpe = 3; //EObex; - } - CleanupStack::PopAndDestroy( 1 ); //transportIdArray, SetIntObjectLC - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfileIAPIdL -// The function gets the profile IAP Id. -// ----------------------------------------------------------------------------- -TInt CNSmlDMSettingsAdapter12::GetProfileIAPIdL( TInt& aIAPid ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileIAPIdL(): begin" ); - TInt retVal = KErrGeneral; - aIAPid = -1; - RArray connIdArray; - CleanupClosePushL( connIdArray ); - iProfile.ListConnectionsL( connIdArray ); - if( connIdArray.Count() == 1 ) - { - RSyncMLTransport transport; - CleanupClosePushL( transport ); - transport.OpenL( iSyncSession, connIdArray[0] ); - const CSyncMLTransportPropertiesArray& props = transport.Properties(); - TInt index = props.Find( KNSmlIAPId ); - if( index > 0 ) - { - RSyncMLConnection conn; - CleanupClosePushL( conn ); - conn.OpenL( iProfile, connIdArray[0] ); - HBufC8* apId = conn.GetPropertyL( KNSmlIAPId ).AllocLC(); - aIAPid = GetIntObject( *apId ); - CleanupStack::PopAndDestroy( 2 ); //conn, apId - retVal = KErrNone; - } - else - { - retVal = KErrNotFound; - } - CleanupStack::PopAndDestroy( 1 ); //transport - iCurrentProfile = 0; - iProfile.Close(); - } - else - { - retVal = KErrNotFound; - } - CleanupStack::PopAndDestroy(); //connIdArray - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileIAPIdL(): end" ); - return retVal; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfileServerURLL -// The function gets the profile Server URI. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetProfileServerURLL( CBufBase& aURL ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileServerURLL(): begin" ); - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iProfile.ListConnectionsL( transportIdArray ); - if( transportIdArray.Count() > 0 ) - { - RSyncMLConnection profConn; - CleanupClosePushL( profConn ); - profConn.OpenL( iProfile, transportIdArray[0] ); - HBufC8* sURI = profConn.ServerURI().AllocL(); - CleanupStack::PushL( sURI ); - TPtr8 uriPtr = sURI->Des(); - if( uriPtr.Length() > 0 ) - { - aURL.InsertL( aURL.Size(),uriPtr ); - } - else - { - aURL.InsertL( aURL.Size(), KNullDesC8 ); - } - CleanupStack::PopAndDestroy( 2 );//profConn, sURI - } - CleanupStack::PopAndDestroy(); //transportIdArray - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileServerURLL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetMediumTypeL -// Checks the requested medium type. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetMediumTypeL( const TInt aIntObj, - TInt& aMediumType ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetMediumTypeL(): begin" ); - if( aIntObj == EHttp || aIntObj == EWsp ) - { - aMediumType = KUidNSmlMediumTypeInternet.iUid; - return; - } - RArray transportIdArray; - CleanupClosePushL( transportIdArray ); - iSyncSession.ListTransportsL( transportIdArray ); - - if ( transportIdArray.Find( KUidNSmlMediumTypeBluetooth.iUid ) != KErrNotFound ) - { - aMediumType = KUidNSmlMediumTypeBluetooth.iUid; - } - else if ( transportIdArray.Find( KUidNSmlMediumTypeUSB.iUid ) != KErrNotFound ) - { - aMediumType = KUidNSmlMediumTypeUSB.iUid; - } - else if ( transportIdArray.Find( KUidNSmlMediumTypeIrDA.iUid ) != KErrNotFound ) - { - aMediumType = KUidNSmlMediumTypeIrDA.iUid; - } - CleanupStack::PopAndDestroy(); //transportIdArray - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetMediumTypeL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetServerIdL -// Gets the server id value. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetServerIdL( CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetServerIdL(): begin" ); - HBufC8* serverId = iProfile.ServerId().AllocL(); - CleanupStack::PushL( serverId ); - aObject.InsertL( aObject.Size(), *serverId ); - CleanupStack::PopAndDestroy( 1 ); //serverId - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetServerIdL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfileNameL -// Gets the display name value. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetProfileNameL( CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileNameL(): begin" ); - HBufC16* dataBuf = iProfile.DisplayName().AllocL(); - CleanupStack::PushL( dataBuf ); - TPtr16 ptrDisplayName = dataBuf->Des(); - HBufC8* dataBuf8 = HBufC8::NewL( ptrDisplayName.Length() * 2 ); - CleanupStack::PushL( dataBuf8 ); - - TPtr8 ptrDisplayName8 = dataBuf8->Des(); - ptrDisplayName8 = ConvertTo8LC( ptrDisplayName ); - aObject.InsertL( aObject.Size(), ptrDisplayName8 ); - CleanupStack::PopAndDestroy( 3 );//dataBuf, ConvertTo8LC - _DBG_FILE("CNSmlDMSettingsAdapter12::GetProfileNameL(): end"); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfileUserNameL -// Gets the profile user name value. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetProfileUserNameL( CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileUserNameL(): begin" ); - HBufC8* dataBuf = iProfile.UserName().AllocL(); - CleanupStack::PushL( dataBuf ); - TPtr8 ptrUserName = dataBuf->Des(); - aObject.InsertL( aObject.Size(), ptrUserName ); - CleanupStack::PopAndDestroy();//dataBuf - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfileUserNameL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::GetProfilePortNumberL -// Gets the port number value. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::GetProfilePortNumberL( CBufBase& aObject ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfilePortNumberL(): begin" ); - TInt bSize = aObject.Size(); - TInt portNum = 0; - HBufC8* bufStorage = HBufC8::NewLC( bSize ); - TPtr8 bufStoragePtr = bufStorage->Des(); - aObject.Read( 0, bufStoragePtr, aObject.Size() ); - aObject.Reset(); - - //find out the port number - ParseUri( *bufStorage, portNum ); - aObject.InsertL( aObject.Size(), SetIntObjectLC( portNum ) ); - - CleanupStack::PopAndDestroy( 2 ); //bufStorage, SetIntObjectLC() - _DBG_FILE( "CNSmlDMSettingsAdapter12::GetProfilePortNumberL(): end" ); - return; - } - -// ----------------------------------------------------------------------------- -// CNSmlDMSettingsAdapter12::SetAuthInfoL -// The function checks if authinfo already exits. If exits command is replace. -// ----------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::SetAuthInfoL( const TInt aLUID, - const TNSmlDMProfileData aField, - const TDesC8& aObject, TInt& aStatus ) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetAuthInfoL(): begin" ); - - CNSmlDMAuthInfo* authInfo = new (ELeave) CNSmlDMAuthInfo(); - CleanupStack::PushL( authInfo ); - authInfo->iProfileId = aLUID; - - iPrivateApi.OpenL(); - TRAPD( err, iPrivateApi.GetDMAuthInfoL( *authInfo ) ); - - if ( err ) - { - CleanupStack::PopAndDestroy( authInfo ); - iPrivateApi.Close(); - aStatus = err; - return; - } - - CNSmlDMAuthInfo* newAuthInfo = new (ELeave) CNSmlDMAuthInfo(); - CleanupStack::PushL( newAuthInfo ); - newAuthInfo->iProfileId = aLUID; - - if ( aField == EServerNonce ) - { - newAuthInfo->iServerNonce = aObject.Alloc(); - newAuthInfo->iClientNonce = authInfo->iClientNonce->Des().Alloc(); - newAuthInfo->iAuthPref = authInfo->iAuthPref; - - iPrivateApi.SetDMAuthInfoL( *newAuthInfo ); - } - else if ( aField == EClientNonce ) - { - newAuthInfo->iServerNonce = authInfo->iServerNonce->Des().Alloc(); - newAuthInfo->iClientNonce = aObject.Alloc(); - newAuthInfo->iAuthPref = authInfo->iAuthPref; - - iPrivateApi.SetDMAuthInfoL( *newAuthInfo ); - } - else if ( aField == EAuthenticationRequired ) - { - if ( aObject.Match( KNSmlDMAuthPrefNoAuth ) != KErrNotFound ) - { - newAuthInfo->iAuthPref = ENoAuth; - } - else if ( aObject.Match( KNSmlDMAuthPrefBasic ) != KErrNotFound ) - { - newAuthInfo->iAuthPref = EBasic; - } - else if ( aObject.Match( KNSmlDMAuthPrefMD5 ) != KErrNotFound ) - { - newAuthInfo->iAuthPref = EMD5; - } - newAuthInfo->iServerNonce = authInfo->iServerNonce->Des().Alloc(); - newAuthInfo->iClientNonce = authInfo->iClientNonce->Des().Alloc(); - - iPrivateApi.SetDMAuthInfoL( *newAuthInfo ); - } - - CleanupStack::PopAndDestroy( newAuthInfo ); - CleanupStack::PopAndDestroy( authInfo ); - - iPrivateApi.Close(); - aStatus = KErrNone; - _DBG_FILE( "CNSmlDMSettingsAdapter12::SetAuthInfoL(): end" ); - return; - } - -//------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::AddNodeBufferL() -// Buffers Node Object -//------------------------------------------------------------------------------ -void CNSmlDMSettingsAdapter12::AddNodeBufferL( const TDesC8& aURI, - const TInt aStatusRef) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeBufferL(): begin" ); - TInt index = -1; - - for (TInt i = 0; iCount (); i++) - { - if ( iBuffer->At(i).iMappingName->Compare (aURI)== 0) - { - index = i; - //CallBack for duplicate - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeBufferL(): EAlreadyExists end" ); - iCallBack->SetStatusL ( aStatusRef, CSmlDmAdapter::EAlreadyExists); - break; - } - } - - if ( index<0) - { - TNSmlDMBufferElement newNode; - newNode.iMappingName = aURI.AllocLC (); - newNode.iLeafBuf = new (ELeave) CArrayFixFlat (4); - newNode.iExecuted = EFalse; - newNode.iDMBuffStatusref = aStatusRef; - newNode.iAddr = EFalse; - newNode.iServerId = EFalse; - newNode.iUName = EFalse; - newNode.iServerName = EFalse; - - iBuffer->AppendL (newNode); - //newNode.iMappingName - CleanupStack::Pop (); - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddNodeBufferL(): end" ); - } - -//------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::AddLeafBufferL() -// Buffers Leaf Obj & checks for Mandatory fields -//------------------------------------------------------------------------------ -void CNSmlDMSettingsAdapter12::AddLeafBufferL( const TDesC8& aURI, - const TDesC8& aObject, const TInt aStatusRef) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafBufferL(): begin" ); - TNSmlDMLeafElement newCommand; - - newCommand.iUri = aURI.AllocLC (); - newCommand.iData = aObject.AllocLC (); - newCommand.iLuid = HBufC8::NewLC (8); //Allocate Mem. for iLUID - newCommand.iStatusRef = aStatusRef; - //Add Leaf to the index updated by UpdateLeafObj - iBuffer->At(iExecutionIndex).iLeafBuf->AppendL (newCommand); - // iUri, iData, ILuid - CleanupStack::Pop (3); - SetField ( aURI); - SetURIInProcessL ( aURI); - if ( iField->Compare (KNSmlDdfAddr)== 0) - { - iBuffer->At(iExecutionIndex).iAddr = ETrue; - } - else - if ( iField->Compare (KNSmlDdfServerId)== 0) - { - if(!IsServerIDExistL(aObject)) - iBuffer->At(iExecutionIndex).iServerId = ETrue; - } - else - if ( iField->Compare (KNSmlDdfAAuthName)== 0) - { - //AAuthName under AppAuthCli - if ( iURIField->Find (KDmAccAppAuthDyn2)!= KErrNotFound) - iBuffer->At(iExecutionIndex).iUName = ETrue; - } - else - if ( iField->Compare (KNSmlDdfName)== 0) - { - iBuffer->At(iExecutionIndex).iServerName = ETrue; - } - - // If Address,ServerId,ServerName,UserName then Add - - if ( iBuffer->At(iExecutionIndex).iAddr && iBuffer->At(iExecutionIndex).iServerId &&iBuffer->At(iExecutionIndex).iUName && iBuffer->At(iExecutionIndex).iServerName) - { - ExecuteBufferL (); - iExecutionIndex = -1; - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::AddLeafBufferL(): end" ); - return; - } - -//------------------------------------------------------------------------------ -// CNSmlDMSettingsAdapter12::ExecuteBufferL() -// Adds the Node/Leaf obj to the db -//------------------------------------------------------------------------------ -void CNSmlDMSettingsAdapter12::ExecuteBufferL() - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::ExecuteBufferL(): begin" ); - TBuf8<8> newLUID; - TInt rValue; - //Buffer is being Executed - iBufOn = ETrue; - - // Robustness check for Execution Index - if ( iExecutionIndex<0) - { - return; - } - - //Execute BufferL is called from CompleteOutstandingCmdsL only when - - //mandatory fields are not set. Dont update Node/Leaf to the db, return a failure - - if ( !iComplete) - rValue = CreateNewProfileL (iLUID); - else - rValue = CSmlDmAdapter::EError; - - iBuffer->At(iExecutionIndex).iExecuted = ETrue; - - if ( rValue != KErrNone) - { - if ( rValue == KErrNoMemory) - { - iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, CSmlDmAdapter::ENoMemory); - } - else - if ( rValue == KErrNotSupported) - { - iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, - CSmlDmAdapter::EInvalidObject); - } - else - if ( rValue == KErrInUse) - { - iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, - CSmlDmAdapter::EObjectInUse); - } - else - if ( rValue == KErrDiskFull) - { - iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, - CSmlDmAdapter::EDiskFull); - } - else - { - iCallBack->SetStatusL ( iBuffer->At(iExecutionIndex).iDMBuffStatusref, - CSmlDmAdapter::EError); - } - // dont return, UpdateLeafObjectL will update the callback status for leaf Nodes - } - else - { - if ( iLUID >= KMaxDataSyncID) - { - newLUID.Num ( iLUID - KMaxDataSyncID); - } - else - { - newLUID.Num ( iLUID); - } - - iCallBack->SetMappingL ( *iBuffer->At(iExecutionIndex).iMappingName, newLUID); - - iCallBack->SetStatusL (iBuffer->At(iExecutionIndex).iDMBuffStatusref, CSmlDmAdapter::EOk); - } - - for (TInt val= 0; val < iBuffer->At(iExecutionIndex).iLeafBuf->Count ();val++) - { - //Update the LUID data in the Leaf structure with the Profile LUID before calling UpdateLeafObj - TPtr8 tempLUID(iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iLuid->Des ()); - tempLUID.Append (newLUID); - UpdateLeafObjectL (*iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iUri, *iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iLuid, *iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iData, *iBuffer->At(iExecutionIndex).iMappingName, iBuffer->At(iExecutionIndex).iLeafBuf->At(val).iStatusRef); - - } - - // Delete the dynamically allocated buffers (Node/Leaf obj) - - ClearBuffer ( iBuffer->At(iExecutionIndex).iLeafBuf); - - delete iBuffer->At(iExecutionIndex).iLeafBuf; - - if ( iBuffer->At(iExecutionIndex).iMappingName) - { - delete iBuffer->At(iExecutionIndex).iMappingName; - iBuffer->At(iExecutionIndex).iMappingName = NULL; - } - - iBuffer->Delete (iExecutionIndex); - iBuffer->Compress (); - //Buffer Execution Complete - iBufOn = EFalse; - _DBG_FILE( "CNSmlDMSettingsAdapter12::ExecuteBufferL(): end" ); - } - -//------------------------------------------------------------------------------ -// TPtrC8 CNSmlDMSettingsAdapter12::ParentURI(const TDesC8& aURI) -// returns parent uri -// Searches till the 2nd "/" is reached -//------------------------------------------------------------------------------ -TPtrC8 CNSmlDMSettingsAdapter12::ParentURI(const TDesC8& aURI) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::ParentURI(): begin" ); - TInt count; - TInt flag = 0; - for (count=0; count<=aURI.Length ()-1;count++) - { - - if ( aURI[count]=='/') - { - flag++; - if ( flag == KDynNodePosn) // KDynNodePosn =2 --> DMAcc/DMIDxxx - break; - } - } - _DBG_FILE( "CNSmlDMSettingsAdapter12::ParentURI(): end" ); - return aURI.Left (count); - } - -//----------------------------------------------------------------------------------------- -// Clears the elements of the passed in LeafElement Structure -//----------------------------------------------------------------------------------------- -void CNSmlDMSettingsAdapter12::ClearBuffer( - CArrayFixFlat* aBuffer) - { - _DBG_FILE( "CNSmlDMSettingsAdapter12::ClearBuffer(): begin" ); - for (TInt i = 0; i < aBuffer->Count (); i++) - { - delete aBuffer->At(i).iUri; - aBuffer->At(i).iUri = NULL; - - delete aBuffer->At(i).iData; - aBuffer->At(i).iData = NULL; - - delete aBuffer->At(i).iLuid; - aBuffer->At(i).iLuid = NULL; - } - - aBuffer->Reset (); - _DBG_FILE( "CNSmlDMSettingsAdapter12::ClearBuffer(): end" ); - } - -//-------------------------------------------------------------------- -//TInt CNSmlDMSettingsAdapter::IsDMAccUriFormatMatchPredefined(const TDesC8 & aURI) -// -//------------------------------------------------------------------- - - -TBool CNSmlDMSettingsAdapter12::IsDMAccUriFormatMatchPredefined(const TDesC8 & aURI) -{ - - // include strings for tree for Bearer , DNS related Dynamic nodes . - - if(aURI.Match(_L8("DMAcc/DMId*")) != KErrNotFound ) - { - return ETrue; - } - else - { - return EFalse; - } - - -} - -//-------------------------------------------------------------------- -//TInt CNSmlDMSettingsAdapter::ConstructTreeL(const TDesC8& aURI) -// -//------------------------------------------------------------------- - -TInt CNSmlDMSettingsAdapter12::ConstructTreeL(const TDesC8& aURI) -{ - TInt profileID = KErrNotFound; - _LIT8( KNSmlDMIdZero, "DMAcc/DMId000" ); - TBuf8<20> zeroURI; // DMAcc/DMIdnnn , nnn = profileid - zeroURI.Append( KNSmlDMIdZero ); - HBufC8* ismapInfo = iCallBack->GetLuidAllocL(zeroURI); - if (ismapInfo->Length() != 0) // Tree is already constructrd, no need to proceed. - { - delete ismapInfo; - return profileID; - } - if( iSyncSessionOpen == EFalse ) - { - iSyncSession.OpenL(); - iSyncSessionOpen = ETrue; - } - RArray profileIdArray; - CleanupClosePushL( profileIdArray ); - TSmlUsageType usageType = ESmlDevMan; - iSyncSession.ListProfilesL( profileIdArray, usageType ); - - for( TInt p = 0; p < profileIdArray.Count(); p++ ) - { - TInt ddId = profileIdArray[p] - KMaxDataSyncID; - - _LIT8( Kprev, "DMId" ); - TBuf8<7> addNAME(Kprev); // DMIdnnn , nnn = profileid - TInt fixedProfId = profileIdArray[p] - KMaxDataSyncID; //fit to 3 decimal - addNAME.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); - DBG_ARGS8( _S8("notInList: Id = %d Name %S"), p, &addNAME ); - // KNSmlDMStart includes start text for URISeg - TBuf8<20> addURI; // DMAcc/DMIdnnn , nnn = profileid - addURI.Append( KNSmlDMStart ); - addURI.AppendNumFixedWidth( fixedProfId, EDecimal, 3 ); - TBuf8<3> addLUID; - addLUID.Num( fixedProfId ); - - HBufC8* mapInfo = iCallBack->GetLuidAllocL(addURI); - - if (mapInfo->Length() == 0) - { - iCallBack->SetMappingL(addURI,addLUID); - if( aURI.Find(addURI) >= 0 ) - { - profileID = fixedProfId; - } - } - else - { - delete mapInfo; - } - } - - CleanupStack::PopAndDestroy( 1 );//profileIdArray - return profileID; -} - -// ========================== OTHER EXPORTED FUNCTIONS ========================= - -#ifndef IMPLEMENTATION_PROXY_ENTRY -#define IMPLEMENTATION_PROXY_ENTRY(aUid, aFuncPtr) {{aUid},(aFuncPtr)} -#endif - -const TImplementationProxy ImplementationTable[] = - { - IMPLEMENTATION_PROXY_ENTRY( KNSmlDMSettingsAdapterImplUid, CNSmlDMSettingsAdapter12::NewL ) - }; - - -// ----------------------------------------------------------------------------- -// TImplementationProxy* ImplementationGroupProxy() -// ----------------------------------------------------------------------------- -EXPORT_C const TImplementationProxy* ImplementationGroupProxy( TInt& aTableCount ) - { - _DBG_FILE( "ImplementationGroupProxy() for CNSmlDMSettingsAdapter: begin" ); - - aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy); - - _DBG_FILE( "ImplementationGroupProxy() for CNSmlDMSettingsAdapter: end" ); - return ImplementationTable; - } - -//------------------------------------------------------------------------------ -// TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri( const TDesC8& aURI ) -// returns DM/xxx URI -//------------------------------------------------------------------------------ -TPtrC8 CNSmlDMSettingsAdapter12::GetDynamicDMNodeUri(const TDesC8& aURI) - { - TInt i= 0; - TBuf8<50> DmAccRoot(KNSmlDefDMAcc); - for ( i = aURI.Find( KNSmlDefDMAcc ) + DmAccRoot.Length() + 1; i < aURI.Length(); i++ ) - { - if( aURI[i] == '/' ) - { - break; - } - } - - return aURI.Left( i ); - } -// End of File -