omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAccesspointItem.cpp
branchRCL_3
changeset 26 19bba8228ff0
parent 1 a9c0ce913924
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omaprovisioning/provisioning/accesspointadapter/Src/CWPAPAccesspointItem.cpp	Wed Sep 01 12:27:42 2010 +0100
@@ -0,0 +1,320 @@
+/*
+* 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:   Class stores data for one accesspoint
+*
+*/
+
+
+
+// INCLUDE FILES
+
+#include "CWPAPAccesspointItem.h"		// Own header
+
+#include <CWPCharacteristic.h>
+#include <CWPParameter.h>
+#include <CWPAdapter.h>
+
+
+#include <bldvariant.hrh>
+#include <featmgr.h>					// Feature manager
+#include <CWPAdapter.h>					// Leave code for protected	
+#include "CWPAPItemBase.h"
+#include "CWPAPNapdef.h"
+#include "WPAPAdapter.pan"
+#include "ProvisioningDebug.h"
+#include <cmconnectionmethodext.h>
+#include <cmmanagerext.h>
+#include <cmpluginpacketdatadef.h> 
+#include <cmpluginwlandef.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::NewLC
+// -----------------------------------------------------------------------------
+CWPAPAccesspointItem* CWPAPAccesspointItem::NewLC(
+                                            const TDesC& aDefaultName,
+                                            CWPAPItemBase* aLogicalProxy,
+                                            CWPAPItemBase* aPhysicalProxy,
+                                            CWPAPItemBase* aNapdef,
+                                            CWPCharacteristic& aCharacteristic )
+	{
+	CWPAPAccesspointItem* self = 
+                        new(ELeave) CWPAPAccesspointItem( aDefaultName, 
+                                                          aLogicalProxy,
+                                                          aPhysicalProxy,
+                                                          aNapdef,
+                                                          aCharacteristic ); 
+	CleanupStack::PushL( self );
+	self->ConstructL();
+	return self;
+	}
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+CWPAPAccesspointItem::~CWPAPAccesspointItem()
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::Name
+// -----------------------------------------------------------------------------
+//
+const TDesC& CWPAPAccesspointItem::Name() const
+	{
+	if ( iLogicalProxy && iLogicalProxy->Name() != KNullDesC )
+        {
+        return iLogicalProxy->Name();
+		}
+    else if( iPhysicalProxy && iPhysicalProxy->Name() != KNullDesC )
+        {
+        return iPhysicalProxy->Name();
+        }
+    else if( iNapdef && iNapdef->Name() != KNullDesC )
+        {
+        return iNapdef->Name();
+        }
+	else
+		{
+		return iDefaultName;
+		}
+	}
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::NapDef
+// -----------------------------------------------------------------------------
+//
+CWPAPItemBase* CWPAPAccesspointItem::NapDef()
+	{
+	return iNapdef;
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::SetCMManager
+// -----------------------------------------------------------------------------
+//
+void CWPAPAccesspointItem::SetCMManager( RCmManagerExt* aCm )
+	{
+	iCmManager = aCm;
+	}
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::Characteristic
+// -----------------------------------------------------------------------------
+//
+TInt CWPAPAccesspointItem::Characteristic()
+	{
+	return iCharacteristic.Type();
+	}
+	
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::SaveL
+// -----------------------------------------------------------------------------
+//
+TUint32 CWPAPAccesspointItem::SaveL( CCommsDatabase& aCommsDb )
+	{
+	FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::SaveL:" ) );
+	
+	if ( FeatureManager::FeatureSupported( KFeatureIdSettingsProtection ) )
+		{
+		// This protection check is no longer needed since CMManager 
+		// initiates the transactions to the database
+		/*if( CApProtHandler::IsTableProtectedL( &aCommsDb ) )
+			{
+			// Table protected -> leave with specific code.
+			User::Leave( EWPAccessPointsProtected );
+			}*/	
+		}
+
+	  TUint32 iap = 0;
+    TRAPD( err,iap = StoreL( aCommsDb ) );
+    if( err == KErrLocked )
+        {
+        err = EWPCommsDBLocked;
+        }
+    User::LeaveIfError( err );
+    return iap;
+	}
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::StoreL
+// -----------------------------------------------------------------------------
+//
+TUint32 CWPAPAccesspointItem::StoreL( CCommsDatabase& aCommsDb )
+	{
+	FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL:" ) );
+    
+    // CMManager
+    // Create the cmIten, give the bearer as parameter if it is available
+    RCmConnectionMethodExt cmItem;
+    TBool created = EFalse;
+    TUint bearer;
+    TInt err(KErrNone);
+    
+    // If the NapDef object exists and the bearer is defined, then we can
+    // create the connection method using the bearer
+    if ( iNapdef != NULL )
+    	{
+    	bearer = static_cast<CWPAPNapdef*>(iNapdef)->Bearer();
+    	if ( bearer != 0 )
+    		{
+    		cmItem = iCmManager->CreateConnectionMethodL(bearer);
+    		created = ETrue;
+    		}
+    	}
+    	
+    // If the bearer id is not known we will use packet data
+    if ( !created)
+    	{
+    	cmItem = iCmManager->CreateConnectionMethodL(KUidPacketDataBearerType);
+    	}
+    // Create the connection method into the DB
+    TRAP( err,cmItem.UpdateL() );
+    // Leave if the creation fails for some reason
+    if(err!=KErrNone)
+		{
+       	User::Leave(err);
+       	}
+       
+    if( iNapdef )
+        {
+        FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: napdef" ) );
+        
+        // CMManager 
+        TRAP (err, iNapdef->AddDataL( cmItem ));
+       	TRAP ( err,cmItem.UpdateL() );
+       	// Leave if the update of the parameters fails
+    	if(err!=KErrNone)
+			{
+       		User::Leave(err);
+       		}
+        }
+        
+    if( iLogicalProxy )
+        {
+        FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: logicalproxy" ) );
+        // CMManager 
+        iLogicalProxy->AddDataL( cmItem );
+        TRAP( err,cmItem.UpdateL() );
+        // Leave if the update of the parameters fails
+    	if(err!=KErrNone)
+			{
+       		User::Leave(err);
+       		}
+        }
+
+    if( iPhysicalProxy )
+        {
+        FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: physicalproxy" ) );
+        // CMManager 
+        iPhysicalProxy->AddDataL( cmItem );
+        TRAP( err,cmItem.UpdateL() );
+        // Leave if the update of the parameters fails
+    	if(err!=KErrNone)
+			{
+       		User::Leave(err);
+       		}
+        }
+
+    FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: cmItem.UpdateL" ) );
+    
+    // CMManager
+    iUid = cmItem.GetIntAttributeL( CMManager::ECmWapId );
+    
+    TInt test( KErrNone );
+    // Update parameter data to CM
+    TRAP( test,cmItem.UpdateL() );
+    FTRACE(RDebug::Print(_L("[AccessPointAdapter] CWPAPAccesspointItem::StoreL: UpdateL err: %d"), test ));
+    
+    TUint32 cmId = cmItem.GetIntAttributeL( CMManager::ECmId ); 
+    cmItem.Close();
+    
+	if( iNapdef )
+    	{
+		iNapdef->UpdateLingerL(iUid());
+    	}
+       
+
+    FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: SaveWlanDataL" ) );
+    if( iNapdef )
+        { 
+        // Give CMManager pointer and save WLAN data
+		static_cast<CWPAPNapdef*>(iNapdef)->SetCMManager( iCmManager );
+        iNapdef->SaveWlanDataL( cmId, aCommsDb );
+        }
+    
+    
+    TInt i( 0 );
+    TPtrC8 data( iCharacteristic.Data(i) );
+    while( data != KNullDesC8 )
+        {
+        i++;
+        data.Set( iCharacteristic.Data(i) );
+        }
+        
+    iCharacteristic.SetDataL( iUid, i );
+    
+    FLOG( _L( "[AccessPointAdapter] CWPAPAccesspointItem::StoreL: done" ) );
+    return iUid();
+    }
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::Uid
+// -----------------------------------------------------------------------------
+//
+const TDesC8& CWPAPAccesspointItem::Uid() const
+	{
+    return iUid;
+    }
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::DeleteUidData
+// -----------------------------------------------------------------------------
+//
+void CWPAPAccesspointItem::DeleteUidData() const
+	{
+    iCharacteristic.DeleteAllData();
+    }
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::CWPAPAccesspointItem
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CWPAPAccesspointItem::CWPAPAccesspointItem( const TDesC& aDefaultName,
+                                            CWPAPItemBase* aLogicalProxy,
+                                            CWPAPItemBase* aPhysicalProxy,
+                                            CWPAPItemBase* aNapdef,
+                                            CWPCharacteristic& aCharacteristic )
+                                        : iDefaultName( aDefaultName ),
+                                          iNapdef( aNapdef ),
+                                          iPhysicalProxy( aPhysicalProxy ),
+                                          iLogicalProxy( aLogicalProxy ),
+                                          iCharacteristic( aCharacteristic )
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CWPAPAccesspointItem::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CWPAPAccesspointItem::ConstructL()
+	{
+	}
+
+//  End of File