secureswitools/swisistools/source/interpretsislib/sisregistry.h
changeset 0 ba25891c3a9e
child 25 98b66e4fb0be
child 62 5cc91383ab1e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/interpretsislib/sisregistry.h	Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,278 @@
+/*
+* Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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: 
+* SisRegistry - All operations related to the registry.
+*
+*/
+
+
+/**
+ @file 
+ @released
+ @internalComponent
+*/
+
+#ifndef	SISREGISTRY_H
+#define	SISREGISTRY_H
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+
+class DbHelper;
+#include "../xmlparser/xmlparser.h"
+
+#endif // SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+#include <vector>
+#include <string>
+#include <map>
+#include <list>
+
+#include "siscontroller.h"
+#include "symbiantypes.h"
+#include "installablefile.h"
+#include "parameterlist.h"
+#include "sisregistryobject.h"
+
+
+// Forward Declarations
+class SisRegistryPackage;
+class HashContainer;
+class SisRegistryObject;
+class SisFile;
+class RomManager;
+class ConfigManager;
+class CSISController;
+
+class SisRegistry
+	{
+public: // Constructor & destructor
+	SisRegistry( CParameterList& aParamList, RomManager& aRomManager, ConfigManager& aConfigManager);
+	~SisRegistry();
+
+public: // API
+	TBool IsInstalled(TUint32 aUid) const;
+	const SisRegistryPackage& SidToPackage(TUint32 aSid);
+	void SidToFileName(TUint32 aSid, std::wstring& aFileName);
+	bool SidExists(TUint32 aSid) const;
+	const SisRegistryObject& GetRegistryObject(TUint32 aUid) const;
+	SisRegistryObject* GetRegistryObjectPtr(TUint32 aUid);
+	void RemoveEntry(const TUint32 aUid, const std::wstring& aPackageName, const std::wstring& aVendorName);
+	void RemovePkg(const TUint32& aUid, bool aDeleteRomStub = false);
+	void RemovePkgLegacy(const TUint32& aUid, bool aDeleteRomStub = false);
+	
+	void AddRegistryEntry(const SisFile& aSis, const InstallableFiles& aFiles,
+							const InstallSISFile& aInstallSISFile);
+	void UpdateRegistryEntry(const SisFile& aSis, const InstallableFiles& aFiles,
+							const InstallSISFile& aInstallSISFile);
+	const SisRegistryObject* OwningPackage(const std::wstring& aFileName, TUint32& aUid) const;
+	void RemoveBackupLst();
+	bool IsRomStubPackage(const TUint32 aUid);
+	void GetStubFileEntries(const TUint32 aUid, std::list<std::wstring>& aFilesEntries);
+	void GenerateStubRegistry();
+	int GetAugmentationsNumber(TUint32 aUid);
+	CSISController* GetStubController(const TUint32 aUid);
+
+	static const int KSisRegistryMajorVersion;
+	static const int KSisRegistryMinorVersion;
+	static const std::string KRegistryV40string;
+	static const std::string KRegistryV50string;
+	static const std::string KRegistryV51string;
+	static const std::string KRegistryV52string;
+	static const std::string KRegistryV53string;
+	static const std::string KRegistryV54string;
+
+private: // Internal methods
+    void ReadStubs( const std::wstring& aDirectory );
+    void ReadRegistry( const std::wstring& aRegistryBasePath );
+	CSISController* GetStubControllerInDir( const std::wstring& aDirectory, const TUint32 aUid);
+	CSISController* ReadStubController( const wchar_t* aFilename );
+	void GenerateRegistryEntry(SisRegistryObject& aObj, const SisFile& aSis);
+	void ExtractRegistryFiles(const std::wstring& path);
+	void RemoveInstalledFiles(const FileDescriptions& aFileDes, std::wstring& aLocalPath);
+	void GenerateStubRegistry(SisRegistryObject* aSisRegistryObject, CSISController* aSisController);
+	void SetNextIndex(SisRegistryObject& aObj) const;
+	std::wstring GetRegistryDir( const std::wstring& aDrivePath, TUint32 aUid  ) const;
+	void GenerateRegFile(SisRegistryObject& aObj) const;
+	void GenerateCtlFile(SisRegistryObject& aObj, const SisFile& aSis) const;
+
+public:
+	TUint32 GetUid(TUint32 aSid) const;
+	TUint32 GetUid(const std::wstring& aSidFile) const;
+	bool GetInRom(TUint32 aUid) const;
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	const DbHelper* GetDbHelper() const;	
+#endif
+
+private: // Utility functions
+    static bool IsPackageDir( const std::wstring& aString );
+	void ReadSisRegistryVersion();
+	void FindMarkerAndSetVersion(const std::wstring& aPath);
+	TBool IsSisValid(const std::wstring& aStubPath);
+	bool IsFileWideCard(const std::wstring& aFileName);
+
+private: // Friends
+	friend struct Contains;
+
+private: // Type definitions
+	typedef std::multimap<TUint32, SisRegistryObject*> EntryMap;
+
+private: // Constants
+	static const std::wstring KPathToRegistry;
+	static const std::wstring KPathToRomStubs;
+	static const std::wstring KPathToRegistryVersionMarker;
+	static const std::wstring KSisRegistryVersion;
+	// SisRegistry versions
+	static const std::wstring KRegistryFormat;
+	static const std::wstring KRegistryV40;
+	static const std::wstring KRegistryV51;
+	static const std::wstring KRegistryV52;
+	static const std::wstring KRegistryV53;
+	static const std::wstring KRegistryV54;
+	static const std::wstring KRomStubDir;
+	static const std::wstring KRomRegistryVersionMarker;
+
+private: // Data members
+	std::wstring	iCDrive;
+	TInt			iSystemDrive;
+    CParameterList& iParamList;
+    RomManager& iRomManager;
+	ConfigManager& iConfigManager;
+	EntryMap iEntries;
+
+
+#ifdef SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+private:
+	// internal methods for accessing database
+	void RemovePkgWithScr(TUint32 aUid, bool aSkipRomStub=false);
+	
+
+private:
+	XmlDetails::TScrPreProvisionDetail::TComponent CreateRegistryEntry(const SisRegistryObject& aSisRegistryObject);
+	
+	// specific methods for adding SisRegistryObject
+	void AddLocalizedNames	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+									const SisRegistryObject& aSisRegistryObject
+								);
+
+	
+	void AddComponentDependencies	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+										const SisRegistryObject& aSisRegistryObject 
+									);
+
+	void AddEmbeddedPackages	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+									const std::vector<SisRegistryPackage*>& aEmbeddedPackages 
+								);
+	
+	void AddProperties	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+							const std::vector<SisRegistryProperty*>& aProperties 
+						);
+	
+	void AddFileDescription	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+								const std::vector<FileDescription*>& aFileDescription 
+							);
+	
+	void AddFileDescriptionAsFileProperty	(	XmlDetails::TScrPreProvisionDetail::TComponentFile& aComponentFile, 
+												const FileDescription* aFileDescription
+											);
+
+	void AddTrustStatus	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, const TrustStatus& aTrustStatus );
+
+	void AddInstallChainIndices	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+									const std::vector<TInt>& aInstallChainIndices 
+								);
+	
+	// specific methods for adding SisRegistryToken
+	void AddSisRegistryToken	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+									const SisRegistryToken& aSisRegistryToken 
+								);
+
+	void AddControllerInfo	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+								const std::vector<ControllerInfo*>& aControllerInfo 
+							);
+
+	void AddHashContainer	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+								const HashContainer& aHashContainer,
+								int aCount
+							);
+
+	void AddVersion	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+						const Version& aVersion
+					);
+
+	// specific methods for adding SisRegistryPackage
+	void AddSisRegistryPackage	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, 
+									const SisRegistryPackage& aSisRegistryPackage,
+									int aLanguage
+								);
+
+
+	// physical schema methods
+	XmlDetails::TScrPreProvisionDetail::TComponentProperty CreateComponentProperty	(	const std::wstring& aPropName, 
+																						const std::wstring& aPropValue, 
+																						bool aIsInt, 
+																						bool aIsStr8Bit,
+																						int aLocale=CSISLanguage::ELangTest 
+																					);
+
+	void AddComponentProperty	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent,
+									const std::wstring& aPropName,
+									int aPropValue,
+									int aCount
+								);
+
+	void AddComponentProperty	(	XmlDetails::TScrPreProvisionDetail::TComponent& aComponent,
+									const std::wstring& aPropName,
+									const std::wstring& aPropValue,
+									int aCount,
+									bool aIsBinary
+								);
+
+	void AddFileProperty	(	XmlDetails::TScrPreProvisionDetail::TComponentFile& aComponentFile,
+								const std::wstring& aPropName,
+								const std::wstring& aPropValue,
+								bool aIsBinary
+							);
+
+	void AddFileProperty	(	XmlDetails::TScrPreProvisionDetail::TComponentFile& aComponentFile,
+								const std::wstring& aPropName,
+								int aPropValue,
+								bool aIsBinary
+							);
+
+	// other helper methods
+	
+
+	std::wstring FormatVersionToString( const Version& aVersion );
+
+	std::string GetEpocRoot();
+
+	void UpdateInstallationInformation(XmlDetails::TScrPreProvisionDetail aScrPreProvisionDetail);
+	
+	void GenerateDbRegistryEntry(const SisRegistryObject& aSisRegistryObject, bool aOriginVerified);
+
+	std::string GetDbPath();
+
+	std::wstring GetGlobalId( TUint32 aUid , TInt aInstallType, std::wstring aPackageName);
+
+	void SetOriginVerification(XmlDetails::TScrPreProvisionDetail::TComponent& aComponent, bool aOriginVerified);
+private:
+	DbHelper* iDbHelper;
+
+	static const std::wstring NativeSoftwareType;
+
+#endif //SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK
+	
+};
+
+#endif	/* SISREGISTRY_H */
+