diff -r 000000000000 -r b497e44ab2fc omaprovisioning/provisioning/ProvisioningEngine/Src/CWPEngine.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/omaprovisioning/provisioning/ProvisioningEngine/Src/CWPEngine.cpp Thu Dec 17 09:07:52 2009 +0200 @@ -0,0 +1,487 @@ +/* +* Copyright (c) 2002 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: Engine class for Provisioning. +* +*/ + + +// INCLUDE FILES +#include "CWPEngine.h" +#include +#include "CWPWbxmlParser.h" +#include "CWPEngine.pan" +#include "CWPRoot.h" +#include "CWPValidator.h" +#include "CWPAdapterManager.h" +#include "MWPContextManager.h" +#include "WPContextManagerFactory.h" +#include "WPEngineDebug.h" +#include "CWPPushMessage.h" +#include "ProvisioningDebug.h" + +// CONSTANTS +const TInt KStreamVersion = 1; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CWPEngine::CWPEngine +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CWPEngine::CWPEngine():iAccessDenied(EFalse) + { + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CWPEngine::ConstructL() + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::ConstructL" ) ); + + iRoot = CWPRoot::NewL(); + // Create a context manager + iManager = WPContextManagerFactory::CreateL(); + FLOG( _L( "[ProvisioningEngine] CWPEngine::ConstructL done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CWPEngine* CWPEngine::NewL() + { + CWPEngine* self = NewLC(); + CleanupStack::Pop(); + + return self; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::NewLC +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C CWPEngine* CWPEngine::NewLC() + { + CWPEngine* self = new( ELeave ) CWPEngine; + + CleanupStack::PushL( self ); + self->ConstructL(); + + return self; + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +CWPEngine::~CWPEngine() + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::~CWPEngine" ) ); + delete iManager; + delete iAdapters; + delete iRoot; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::RestoreL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::RestoreL( CStreamStore& aStore, TStreamId aId ) + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::RestoreL" ) ); + + RStoreReadStream instream; + instream.OpenLC(aStore,aId); + InternalizeL(instream); + CleanupStack::PopAndDestroy(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::StoreL +// ----------------------------------------------------------------------------- +// +EXPORT_C TStreamId CWPEngine::StoreL( CStreamStore& aStore ) const + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::StoreL" ) ); + + RStoreWriteStream stream; + TStreamId id=stream.CreateLC(aStore); + ExternalizeL(stream); + stream.CommitL(); + CleanupStack::PopAndDestroy(); + return id; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::InternalizeL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::InternalizeL( RReadStream& aStream ) + { + if( aStream.ReadInt32L() != KStreamVersion ) + { + User::Leave( KErrNotSupported ); + } + + iRoot->InternalizeL( aStream ); + CreateLinksL(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ExternalizeL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::ExternalizeL( RWriteStream& aStream ) const + { + aStream.WriteInt32L( KStreamVersion ); + iRoot->ExternalizeL( aStream ); + } + + +// ----------------------------------------------------------------------------- +// CWPEngine::AcceptL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::AcceptL( MWPVisitor& aVisitor ) + { + iRoot->AcceptL( aVisitor ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ImportDocumentL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::ImportDocumentL( const TDesC8& aDocument ) + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::ImportDocumentL begin" ) ); + + #ifdef _DEBUG + FHex(aDocument); + #endif + + CWPWbxmlParser* parser = CWPWbxmlParser::NewL(); + CleanupStack::PushL( parser ); + parser->ParseL( aDocument, *iRoot ); + CleanupStack::PopAndDestroy(); // parser + + CWPValidator* validator = CWPValidator::NewLC(); + iRoot->AcceptL( *validator ); + CleanupStack::PopAndDestroy(); + + CreateLinksL(); + FLOG( _L( "[ProvisioningEngine] CWPEngine::ImportDocumentL end" ) ); + + } + +// ----------------------------------------------------------------------------- +// CWPEngine::PopulateL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::PopulateL() + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::PopulateL" ) ); + + // First remove the old adapters + delete iAdapters; + iAdapters = NULL; + + // Create the adapters + AdapterManagerL().PopulateL( *iRoot ); + + FLOG( _L( "[ProvisioningEngine] CWPEngine::PopulateL done" ) ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ItemCount +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CWPEngine::ItemCount() const + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::ItemCount: (%d)"), iAdapters->ItemCount())); + + return iAdapters->ItemCount(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SummaryTitle +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC16& CWPEngine::SummaryTitle( TInt aIndex ) const + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::SummaryTitle: (%d)"), aIndex)); + + return iAdapters->SummaryTitle(aIndex); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SummaryText +// ----------------------------------------------------------------------------- +// +EXPORT_C const TDesC16& CWPEngine::SummaryText( TInt aIndex ) const + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::SummaryText: (%d)"), aIndex)); + + return iAdapters->SummaryText(aIndex); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::DetailsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CWPEngine::DetailsL( TInt aIndex, MWPPairVisitor& aVisitor ) + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::DetailsL: (%d)"), aIndex)); + + return AdapterManagerL().DetailsL(aIndex, aVisitor); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SaveL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::SaveL( TInt aIndex ) + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::SaveL: (%d)"), aIndex)); + + AdapterManagerL().SaveL( *iManager, aIndex ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::CanSetAsDefault +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CWPEngine::CanSetAsDefault( TInt aIndex ) const + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::CanSetAsDefault: (%d)"), aIndex)); + + return iAdapters->CanSetAsDefault(aIndex); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SetAsDefaultL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::SetAsDefaultL( TInt aIndex ) + { + FTRACE(RDebug::Print(_L("[Provisioning] CWPEngine::SetAsDefault: (%d)"), aIndex)); + + AdapterManagerL().SetAsDefaultL(aIndex); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::CreateLinksL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::CreateLinksL() + { + iRoot->CreateLinksL(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::Builder +// ----------------------------------------------------------------------------- +// +EXPORT_C MWPBuilder& CWPEngine::Builder() const + { + return *iRoot; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextManager +// ----------------------------------------------------------------------------- +// +MWPContextManager& CWPEngine::ContextManager() const + { + FLOG( _L( "[ProvisioningEngine] CWPEngine::ContextManager" ) ); + return *iManager; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::AdapterManager +// ----------------------------------------------------------------------------- +// +CWPAdapterManager& CWPEngine::AdapterManagerL() + { + if( !iAdapters ) + { + iAdapters = CWPAdapterManager::NewL(); + } + + return *iAdapters; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::CreateContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C TUint32 CWPEngine::CreateContextL( const TDesC& aName, + const TDesC& aTPS, + const MDesC16Array& aProxies ) + { + return iManager->CreateContextL( aName, aTPS, aProxies ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::DeleteContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::DeleteContextL( TUint32 aUid ) + { + iManager->DeleteContextL( AdapterManagerL(), aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::DeleteContextDataL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CWPEngine::DeleteContextDataL( TUint32 aUid ) + { + return iManager->DeleteContextDataL( AdapterManagerL(), aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextDataCountL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CWPEngine::ContextDataCountL( TUint32 aUid ) + { + return iManager->ContextDataCountL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextUidsL +// ----------------------------------------------------------------------------- +// +EXPORT_C CArrayFix* CWPEngine::ContextUidsL() + { + return iManager->ContextUidsL(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextNameL +// ----------------------------------------------------------------------------- +// +EXPORT_C HBufC* CWPEngine::ContextNameL( TUint32 aUid ) + { + return iManager->ContextNameL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextTPSL +// ----------------------------------------------------------------------------- +// +EXPORT_C HBufC* CWPEngine::ContextTPSL( TUint32 aUid ) + { + return iManager->ContextTPSL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextProxiesL +// ----------------------------------------------------------------------------- +// +EXPORT_C CDesCArray* CWPEngine::ContextProxiesL( TUint32 aUid ) + { + return iManager->ContextProxiesL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextExistsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CWPEngine::ContextExistsL( TUint32 aUid ) + { + return iManager->ContextExistsL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextExistsL +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CWPEngine::ContextExistsL( const TDesC& aTPS ) + { + return iManager->ContextExistsL( aTPS ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::ContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C TUint32 CWPEngine::ContextL( const TDesC& aTPS ) + { + return iManager->ContextL( aTPS ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::CurrentContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C TUint32 CWPEngine::CurrentContextL() + { + return iManager->CurrentContextL(); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SetCurrentContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::SetCurrentContextL( TUint32 aUid ) + { + iManager->SetCurrentContextL( aUid ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::RegisterContextObserverL +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::RegisterContextObserverL( + MWPContextObserver* aObserver ) + { + iManager->RegisterContextObserverL( aObserver ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SetCurrentContextL +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CWPEngine::UnregisterContextObserver( + MWPContextObserver* aObserver ) + { + return iManager->UnregisterContextObserver( aObserver ); + } + +// ----------------------------------------------------------------------------- +// CWPEngine::SetAccessDenied +// ----------------------------------------------------------------------------- +// +EXPORT_C void CWPEngine::SetAccessDenied(TBool aStatus) + { + iAccessDenied = aStatus; + } + +// ----------------------------------------------------------------------------- +// CWPEngine::GetAccessDenied +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CWPEngine::GetAccessDenied() + { + return iAccessDenied; + } + +// End of File