brandingserver/bsclient/cbsupdater.cpp
changeset 0 e6b17d312c8b
child 21 5872ac9a5671
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/brandingserver/bsclient/cbsupdater.cpp	Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,538 @@
+/*
+* 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: CBSUpdater.cpp
+*
+*/
+
+
+//  INCLUDE FILES
+
+#include "e32base.h"
+
+#include "cbsupdater.h"
+#include "debugtrace.h"
+#include "mbsaccess.h"
+#include "bselementfactory.h"
+#include "mbselement.h"
+#include "bsserverdefs.h"
+
+// Two-phased constructor.
+CBSUpdater* CBSUpdater::NewL( const TDesC8& aApplicationId )
+    {
+    CBSUpdater* self = new ( ELeave ) CBSUpdater() ;
+    CleanupStack::PushL( self );
+    self->ConstructL( aApplicationId );
+    CleanupStack::Pop( self );  //self
+    return self;
+    }
+
+// Symbian OS default constructor can leave.
+void CBSUpdater::ConstructL( const TDesC8& aApplicationId  )
+    {
+    iApplicationId = aApplicationId.AllocL();
+    User::LeaveIfError( iClient.Connect() );
+    }
+
+// Destructor
+CBSUpdater::~CBSUpdater()
+    {
+    delete iApplicationId;
+    delete iBrandId;
+    iClient.Close();
+    }
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CBSUpdater::CBSUpdater()
+	{
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::Close()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::Close()
+	{
+	delete this;
+	}
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::StartTransactionL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::StartTransactionL( const TDesC8& aBrandId,
+									TLanguage aLanguageId,
+									TUpdateTransactionType aType, /*EUpdateInstall*/
+									TInt aReserved)
+	{
+	if( iActive )
+		{
+		User::Leave( KErrAlreadyExists );
+		}
+	
+	iActive = ETrue;
+	HBufC8* tmp = aBrandId.AllocL();
+	delete iBrandId;
+	iBrandId = tmp;
+	iLanguageId = aLanguageId;
+	iReserved = aReserved;
+	iTxType = aType;
+	
+	TTransactionType operation = EBSTxAccess;
+	switch( aType )
+		{
+		case EUpdateInstall:
+			{
+			operation = EBSTxInstall;
+			break;
+			}
+		case EUpdateAppend:
+			{
+			operation = EBSTxAppend;
+			break;
+			}
+		case EUpdateReplace:
+			{
+			operation = EBSTxReplace;
+			break;
+			}
+		case EUpdateUninstall:
+			{
+			operation = EBSTxUninstall;
+			break;
+			}
+		default:
+			break;
+		}
+	
+	TRAPD( err, iClient.StartTransactionL( *iApplicationId, aBrandId, KNullDesC8,
+									aLanguageId, operation, aReserved ) );
+	if( err )
+		{
+		iActive = EFalse;
+		User::Leave( err );
+		}
+
+	}
+// -----------------------------------------------------------------------------
+// CBSUpdater::StopTransactionL()
+// -----------------------------------------------------------------------------
+//
+TInt CBSUpdater::StopTransactionL()
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotFound );
+		}
+	
+	TInt returnValue = iClient.StopTransactionL( *iApplicationId, 
+												 *iBrandId, 
+												 iLanguageId, 
+												 iReserved );
+	iActive = EFalse;
+	return returnValue;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::CancelTransactionL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::CancelTransactionL()
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotFound );
+		}
+	
+	iClient.CancelTransactionL( *iApplicationId, *iBrandId, iLanguageId, iReserved );
+	iActive = EFalse;
+	}
+
+
+
+//*** BRAND INSTALLING ***//
+// -----------------------------------------------------------------------------
+// CBSUpdater::InsertTextL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::InsertTextL( const TDesC8& aId,
+				  			  const TDesC& aText )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateInstall )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSText, aText );
+	CleanupClosePushL( *element );
+	InsertElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::InsertBufferL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::InsertBufferL( const TDesC8& aId,
+								const TDesC8& aBuffer )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateInstall )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSBuffer, aBuffer );
+	CleanupClosePushL( *element );
+	InsertElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::InsertIntL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::InsertIntL( const TDesC8& aId,
+				 			 TInt aInt )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateInstall )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSInt, aInt );
+	CleanupClosePushL( *element );
+	InsertElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::InsertFileL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::InsertFileL( const TDesC8& aId,
+				  			  const TDesC& aFileName )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateInstall )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSFile, aFileName );
+	CleanupClosePushL( *element );
+	InsertElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::InsertElementL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::InsertElementL( MBSElement* aElement )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateInstall )
+		{
+		User::Leave( KErrArgument );
+		}
+	iClient.InsertL( aElement );
+	}
+
+
+
+
+//*** BRAND UPDATING - replacing ***//
+// -----------------------------------------------------------------------------
+// CBSUpdater::ReplaceTextL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::ReplaceTextL( const TDesC8& aId,
+				   			   const TDesC& aText )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateReplace )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSText, aText );
+	CleanupClosePushL( *element );
+	ReplaceElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::ReplaceBufferL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::ReplaceBufferL( const TDesC8& aId,
+					 			 const TDesC8& aBuffer )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateReplace )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSBuffer, aBuffer );
+	CleanupClosePushL( *element );
+	ReplaceElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::ReplaceIntL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::ReplaceIntL( const TDesC8& aId,
+				  			  TInt aInt )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateReplace )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSInt, aInt );
+	CleanupClosePushL( *element );
+	ReplaceElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::ReplaceFileL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::ReplaceFileL( const TDesC8& aId,
+				   			   const TDesC& aFileName )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateReplace )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSFile, aFileName );
+	CleanupClosePushL( *element );
+	ReplaceElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::ReplaceElementL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::ReplaceElementL( MBSElement* aElement )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateReplace )
+		{
+		User::Leave( KErrArgument );
+		}
+	iClient.ReplaceL( aElement );
+	}
+
+
+
+
+//*** BRAND UPDATING - appending ***//
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendTextL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::AppendTextL( const TDesC8& aId,
+				  			  const TDesC& aText )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateAppend )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSText, aText );
+	CleanupClosePushL( *element );
+	AppendElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendBufferL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::AppendBufferL( const TDesC8& aId,
+								const TDesC8& aBuffer )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateAppend )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSBuffer, aBuffer );
+	CleanupClosePushL( *element );
+	AppendElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendIntL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::AppendIntL( const TDesC8& aId,
+				 		     TInt aInt )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateAppend )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSInt, aInt );
+	CleanupClosePushL( *element );
+	AppendElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendFileL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::AppendFileL( const TDesC8& aId,
+				  			  const TDesC& aFileName )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateAppend )
+		{
+		User::Leave( KErrArgument );
+		}
+	MBSElement* element = BSElementFactory::CreateBSElementL( aId, EBSFile, aFileName );
+	CleanupClosePushL( *element );
+	AppendElementL( element );
+	CleanupStack::PopAndDestroy(); // element
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendElementL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::AppendElementL( MBSElement* aElement )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	if( iTxType != EUpdateAppend )
+		{
+		User::Leave( KErrArgument );
+		}
+	iClient.AppendL( aElement );
+	}
+
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendElementL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater::RemoveBrandL( const TDesC8& aApplicationId,
+								   const TDesC8& aBrandId )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	iClient.RemoveBrandL( aApplicationId, aBrandId );
+	}
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::AppendElementL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater:: RemoveBrandsL( const TDesC8& aApplicationId )
+	{
+	if( !iActive )
+		{
+		User::Leave( KErrNotReady );
+		}
+	iClient.RemoveBrandsL( aApplicationId );
+	}
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::RegisterObserverL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater:: RegisterObserverL( MBSBackupRestoreStateObserver* aBackupObserver )
+{
+	iClient.RegisterObserverL(NULL, aBackupObserver) ;
+}
+
+// -----------------------------------------------------------------------------
+// CBSUpdater::UnRegisterObserverL()
+// -----------------------------------------------------------------------------
+//
+void CBSUpdater:: UnRegisterObserverL( MBSBackupRestoreStateObserver* aObserver )
+{
+	iClient.UnRegisterObserverL(NULL, aObserver) ;
+}
+
+//  END OF FILE
+