--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/brandingserver/bsserver/cbsstoragemanager.h Thu Dec 17 08:54:49 2009 +0200
@@ -0,0 +1,225 @@
+/*
+* Copyright (c) 2006-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: Storage handler
+*
+*/
+
+
+#ifndef CBSSTORAGEMANAGER_H
+#define CBSSTORAGEMANAGER_H
+
+#include <e32base.h>
+#include <f32file.h>
+
+class CBSSession;
+class CBSIBYWriter;
+class MBSElement;
+class CBSStorage;
+class RWriteStream;
+
+
+/**
+ * Storage handler
+ *
+ * @lib .exe
+ * @since S60 v3.2
+ */
+class CBSStorageManager : public CBase
+{
+public:
+
+ static CBSStorageManager* NewL( CBSSession* aSession, const TDesC& aAppId );
+
+ static CBSStorageManager* NewLC( CBSSession* aSession, const TDesC& aAppId );
+
+ ~CBSStorageManager();
+
+
+ /**
+ * Initializes the transaction to the
+ * storagemanager
+ *
+ * @since S60 3.2
+ * @return none
+ */
+ void ConnectTransactionL(const TDesC& aAppId,
+ const TDesC& aBrandId,
+ TLanguage aLanguageId,
+ TBool aAppending = EFalse,
+ TInt aReserved = 0 );
+
+
+ /**
+ * Create a new storage and set it to current.
+ *
+ * @since S60 3.2
+ * @return none
+ */
+ void CreateStorageL();
+
+ /**
+ * Return the count of storages
+ *
+ * @since S60 3.2
+ * @return count of elements
+ */
+ TInt StorageCount();
+
+ /**
+ * Get stored storage at index or current storage.
+ *
+ * @since S60 3.2
+ * @param aIndex index of storage to fetch.
+ * @return Stored storage
+ */
+ CBSStorage* Storage( TInt aIndex );
+ CBSStorage* Storage();
+
+ /**
+ * Externalize storage files into file system
+ *
+ * @since S60 3.2
+ * @param aFs filesystem handle
+ * @param aBaseDir Base directory for writing
+ * @return the new brand version
+ */
+ TInt WriteStorageFilesL();
+
+ void CancelTransactionL();
+
+ void BrandHandleL( const TDesC& aAppId,
+ const TDesC& aBrandId,
+ TLanguage aLanguageId,
+ RFile& aFile,
+ TInt aReserved );
+
+ void FileElementHandleL( const TDesC& aAppId,
+ const TDesC& aBrandId,
+ const TDesC& aFileName,
+ const TDesC& aLanguageBuf,
+ RFile& aFile );
+
+ void CleanupFileL( const TDesC& aFileName );
+
+ TPtrC FilenameWithoutVersion( const TDesC& aFileName );
+
+ /**
+ * Externalize storage files into file system
+ *
+ * @since S60 3.2
+ * @param aFileName the name of the installed file
+ * including path
+ * @return the filename without path component
+ */
+ HBufC* InstallFileLC( const TDesC& aFileName );
+
+ void RemoveBrandL( const TDesC& aAppId,
+ const TDesC& aBrandId,
+ TLanguage aLanguageId,
+ TInt aReserved = 0);
+
+ void RemoveApplicationL( const TDesC& aAppId );
+
+ TInt NextAvailableVersionL();
+ void SetVersion( TInt aVersionId );
+
+ TInt GetNewestVersionL( const TDesC& aAppId,
+ const TDesC& aBrandId,
+ TLanguage aLanguageId,
+ TPtr* aDrive = NULL);
+ TInt WriteIbyFiles();
+
+ void LockStorage();
+
+ void ReleaseLockL();
+
+ TBool CheckBrandDiscarded(const TDesC& aAppId,
+ const TDesC& aBrandId) ;
+ static HBufC* ConstructDiscardBrandFileNameL( const TDesC& aAppId,
+ const TDesC& aBrandId );
+
+ static HBufC* FullDiscardBrandFileNameLC( TDesC& aFilename ) ;
+
+ TInt isActualBrandInstalledL ( const TDesC& aAppId, const TDesC& aBrandId, TLanguage aLanguage);
+private:
+
+ CBSStorageManager();
+
+ void ConstructL( CBSSession* aSession, const TDesC& aAppId );
+
+ HBufC* ConstructFileNameL( TInt aVersion = 0 );
+
+ HBufC* ConstructFileNameL( const TDesC& aAppId,
+ const TDesC& aBrandId,
+ TLanguage aLanguage,
+ TInt aReserved = 0 );
+
+ void CleanupTransaction();
+
+ HBufC* FullFileNameLC( const TDesC& aFilename, TBool aForceCDrive = EFalse );
+
+ TInt ReadVersionL( const TDesC& aFilename );
+
+ HBufC* FindAvailableVersionL( TInt aCurrentVersion, TInt& aNewVersion );
+
+ TBool IsBaseFileL( const TDesC& aFileName );
+
+
+ /**
+ * Mark a brand package as discarded. Future attempts to create an
+ * access to this brand package will fail.
+ *
+ * @since S60 3.2
+ * @param aAppId a application id
+ * @param aBrandId a brand id
+ */
+ void MarkBrandAsDiscardedL( const TDesC& aAppId,
+ const TDesC& aBrandId );
+
+private: // Data
+
+ // Own. Array of stored storages.
+ RPointerArray<CBSStorage> iStorages;
+
+ // Index of currently active storage
+ TInt iCurrent;
+
+ // IBY writer
+ CBSIBYWriter* iWriter;
+
+ RFs iFs;
+ TBool iActive;
+
+ HBufC* iAppId;
+ HBufC* iBrandId;
+ HBufC* iLanguageId;
+ TLanguage iLanguageIdNum;
+
+ // Own. Proposed file name
+ HBufC* iFilename;
+
+ // Proposed directory (points to iFilename)
+ TPtrC iDir;
+
+ // doesn't own: the server
+ CBSSession* iSession;
+
+ TBool iAppending;
+
+ HBufC* iIbyFile;
+ TInt iReserved;
+
+};
+
+#endif //CBSSTORAGEMANAGER_H