diff -r 77cb48a03620 -r d9861ae9169c XDMEngine/XdmProvisioning/src/xdmprovitem.cpp --- a/XDMEngine/XdmProvisioning/src/xdmprovitem.cpp Thu Jul 01 14:09:06 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,500 +0,0 @@ -/* -* Copyright (c) 2006 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: Provisioning item. -* -*/ - - - - -// INCLUDE FILES -#include -#include -#include -#include -#include - -#include "xdmprovitem.h" - -#ifdef _DEBUG - #include "xdmprovadapter.h" -#endif -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CXdmProvItem::CXdmProvItem -// -// ----------------------------------------------------------------------------- -// -CXdmProvItem::CXdmProvItem(): - iXdmSettingsId( KErrNotFound ), - iAppId( KNullDesC ), - iAppName( KNullDesC ), - iProviderId( KNullDesC ), - iSipReference( NULL ), - iToNapId( KNullDesC ), - iNapId( NULL ), - iNapName( KNullDesC ), - iAppRef( KNullDesC ), - iXcapRootUri( KNullDesC ), - iUserName( KNullDesC ), - iPassword( KNullDesC ), - iAuthType( KNullDesC ), - iSettingsSaved( EFalse ) - { - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CXdmProvItem* CXdmProvItem::NewL() - { - CXdmProvItem* self = new (ELeave) CXdmProvItem(); - return self; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::~CXdmProvItem -// ----------------------------------------------------------------------------- -// -CXdmProvItem::~CXdmProvItem() - { - iToAppReferences.Close(); - delete iSipReference; - delete iNapId; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::Validate -// ----------------------------------------------------------------------------- -// -TBool CXdmProvItem::Validate() const - { - if ( !iAppId.Length() ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate iAppId missing" ) ); -#endif - return EFalse; - } - else if ( iAppId.Compare( KXdmProvAppId ) ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate wrong iAppId" ) ); -#endif - return EFalse; - } - else if ( !iAppName.Length() ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate iAppName missing" ) ); -#endif - return EFalse; - } - else if ( !iToNapId.Length() ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate iNapId missing" ) ); -#endif - return EFalse; - } - else if ( !iXcapRootUri.Length() ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate iXcapRootUri missing" ) ); -#endif - return EFalse; - } - else - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::Validate returns true" ) ); -#endif - return ETrue; - } - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::Name -// ----------------------------------------------------------------------------- -// -const TDesC& CXdmProvItem::Name() const - { - return iAppName; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::ApplicationId -// ----------------------------------------------------------------------------- -// -const TDesC& CXdmProvItem::ApplicationId() const - { - return iAppId; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::XdmSettingsId -// ----------------------------------------------------------------------------- -// -TInt CXdmProvItem::XdmSettingsId() const - { - return iXdmSettingsId; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::AppReference -// ----------------------------------------------------------------------------- -// -const TDesC& CXdmProvItem::AppReference() const - { - return iAppRef; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::SaveL -// ----------------------------------------------------------------------------- -// -TInt CXdmProvItem::SaveL() - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::SaveL" ) ); -#endif - - if( !iSettingsSaved ) - { - CXdmSettingsCollection* settings = new (ELeave) CXdmSettingsCollection(); - CleanupStack::PushL( settings ); // << settings - settings->AppendL( iAppId, EXdmPropAppId ); - CheckExistingNamesL(); - settings->AppendL( iAppName, EXdmPropName ); - settings->AppendL( iProviderId, EXdmPropProvId ); - FindAccessPointIdL(); - settings->AppendL( *iNapId, EXdmPropToNapId ); - if( iSipReference ) - { - settings->AppendL( *iSipReference, EXdmPropToAppRef ); - } - settings->AppendL( iXcapRootUri, EXdmPropUri ); - settings->AppendL( iUserName, EXdmPropAuthName ); - settings->AppendL( iPassword, EXdmPropAuthSecret ); - settings->AppendL( iAuthType, EXdmPropAuthType ); - iXdmSettingsId = TXdmSettingsApi::CreateCollectionL( *settings ); - CleanupStack::PopAndDestroy( settings ); // >>> settings - iSettingsSaved = ETrue; -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::SaveL settings saved" ) ); -#endif - } - - return KErrNone; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::ToAppReferences -// ----------------------------------------------------------------------------- -// -const RArray& CXdmProvItem::ToAppReferences() const - { - return iToAppReferences; - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::VisitL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::VisitL( CWPCharacteristic& aCharacteristic ) - { - if ( KWPResource == aCharacteristic.Type( ) ) - { - aCharacteristic.AcceptL( *this ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::VisitL CWPCharacteristic" ) ); -#endif - } - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::VisitL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::VisitL( CWPParameter& aParameter ) - { -#ifdef _DEBUG - HBufC8* value = HBufC8::NewLC( aParameter.Value().Length() ); // << value - TPtr8 bufferPtr = value->Des(); - bufferPtr.Copy( aParameter.Value() ); - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::VisitL CWPParameter aParameter.Value() =%S" ), &bufferPtr ); - CleanupStack::PopAndDestroy( value ); // >>> value -#endif - switch( aParameter.ID() ) - { - case EWPParameterAppID: - { - iAppId.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterAppID" ) ); -#endif - } - break; - - case EWPParameterProviderID: - { - iProviderId.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterProviderID" ) ); -#endif - } - break; - - case EWPParameterName: - { - iAppName.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterName" ) ); -#endif - } - break; - - case EWPParameterToAppRef: - { - iToAppReferences.Append( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterToAppRef" ) ); -#endif - } - break; - - case EWPParameterToNapID: - { - iToNapId.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterToNapID" ) ); -#endif - } - break; - - case EWPParameterURI: - { - iXcapRootUri.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterURI" ) ); -#endif - } - break; - - case EWPParameterAAuthName: - { - iUserName.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterAAuthName" ) ); -#endif - } - break; - - case EWPParameterAAuthSecret: - { - iPassword.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterAAuthSecret" ) ); -#endif - } - break; - - case EWPParameterAAuthType: - { - iAuthType.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterAAuthType" ) ); -#endif - } - break; - - case EWPParameterAppRef: - { - iAppRef.Set( aParameter.Value() ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::EWPParameterAppRef" ) ); -#endif - } - break; - default: - { - DetermineNamedParameter( aParameter.Name(), aParameter.Value() ); - } - break; - } - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::DetermineNamedParameter -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::DetermineNamedParameter( const TDesC& aName, const TDesC& aValue ) - { - if ( !aName.Compare( KXdmProvAppRef ) ) - { - iAppRef.Set( aValue ); - } - else if ( !aName.Compare( KXdmProvToAppRef ) ) - { - iToAppReferences.Append( aValue ); - } - } -// ----------------------------------------------------------------------------- -// CXdmProvItem::VisitLinkL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::VisitLinkL( CWPCharacteristic& aLink ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::VisitLinkL" ) ); -#endif - if( KWPNapDef == aLink.Type() ) - { - // check that this is the correct one - CArrayFix* napId = new (ELeave) CArrayFixFlat(1); - CleanupStack::PushL( napId ); // << napId - aLink.ParameterL( EWPParameterNapID, napId ); - if ( 0 < napId->Count() ) - { - if ( !napId->At(0).Compare( iToNapId ) ) - { - SetNapDefL( aLink ); - } - } - CleanupStack::PopAndDestroy( napId ); // >>> napId - } - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::SetNapDefL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::SetNapDefL ( CWPCharacteristic& aLink ) - { -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::SetNapDefL" ) ); -#endif - // find the name of the access point - CArrayFix* name = new (ELeave) CArrayFixFlat(1); - CleanupStack::PushL( name ); // << name - aLink.ParameterL( EWPParameterName, name ); - if ( name->Count() > 0 ) - { - iNapName.Set( name->At(0) ); - } - CleanupStack::PopAndDestroy( name ); // >>> name - -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::SetNapDefL done" ) ); -#endif - } -// ----------------------------------------------------------------------------- -// CXdmProvItem::SetSipSettingsIdL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::SetSipSettingsIdL( const TDesC8& aStorageIdValue ) - { - delete iSipReference; - iSipReference = NULL; - iSipReference = HBufC::NewL( aStorageIdValue.Length() ); - iSipReference->Des().Copy( aStorageIdValue ); - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::FindAccessPointIdL -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::FindAccessPointIdL () - { - - TInt result( KErrNone ); - TUint32 idNum; - TBuf name; - // Get IAP names and ids from the database - CCommsDatabase* commsDb = CCommsDatabase::NewL( EDatabaseTypeIAP ); - CleanupStack::PushL( commsDb ); // << commsDb - commsDb->ShowHiddenRecords(); - CCommsDbTableView* view = commsDb->OpenTableLC( TPtrC( IAP ) ); // << view - result = view->GotoFirstRecord(); - - while( KErrNone == result ) - { - view->ReadTextL( TPtrC( COMMDB_NAME ), name ); - if ( KErrNotFound != name.Find( iNapName ) ) - { - view->ReadUintL( TPtrC( COMMDB_ID ), idNum ); -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::FindAccessPointIdL IAP found id=%d" ), idNum ); -#endif - } - result = view->GotoNextRecord(); - } -#ifdef _DEBUG - CXdmProvAdapter::WriteToLog( _L8( "CXdmProvItem::FindAccessPointIdL IAP using id=%d" ), idNum ); -#endif - CleanupStack::PopAndDestroy( 2, commsDb ); // >>> view, commsDb - TBuf id; - id.AppendNum( idNum, EDecimal ); - delete iNapId; - iNapId = NULL; - iNapId = id.AllocL(); - } - -// ----------------------------------------------------------------------------- -// CXdmProvItem::CheckExistingNamesL() -// ----------------------------------------------------------------------------- -// -void CXdmProvItem::CheckExistingNamesL( ) - { - TBool ready( EFalse ); - RArray settingIds; - CleanupClosePushL( settingIds ); // << settingIds - CDesCArray* settingNames = TXdmSettingsApi::CollectionNamesLC( settingIds ); // << settingNames - TInt index( 0 ); - while ( !ready ) - { - TBool found ( EFalse ); - TInt count = settingNames->MdcaCount(); - TBuf tempName; - tempName.Copy( iAppName ); - if ( index > 0 ) - { - tempName.Append( KXdmProvStartBracket ); - tempName.AppendNumFixedWidth( index, EDecimal, 2 ); - tempName.Append( KXdmProvCloseBracket ); - } - for ( TInt i(0); i < count && !found; i++ ) - { - if ( !settingNames->MdcaPoint(i).CompareF( tempName ) ) - { - found = ETrue; - index++; - } - } - if ( !found ) - { - ready = ETrue; - iAppName.Set( tempName ); - } - } - // only number used in next function, type of RArray - CleanupStack::PopAndDestroy( 2 ); // >>> settingNames, settingIds - } - - -// End of File -