diff -r 000000000000 -r 08ec8eefde2f persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,90 @@ +// 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 "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: +// Store/Load database system settings (database settings, security policies) +// +// + +#ifndef __SQLSRVDBSYSSETTINGS_H__ +#define __SQLSRVDBSYSSETTINGS_H__ + +#include "SqlPanic.h" // __SQLASSERT, ESqlPanicInternalError +#include "SqlUtil.h" // TSqlCompactionMode + +//Forward declarations +struct sqlite3; +struct sqlite3_stmt; +class CSqlSecurityPolicy; +class TSqlSrvFileData; +class RFs; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////// +////////////////////////////// TSqlDbSysSettings class //////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +/** +Stores database system settings to database system settings table. +Stores database security policies to database security policy table. +Loads database system settings from database system settings table. +Loads database security policies from database security policy table. +Reindexes a database that is being 'Open'ed or 'Attach'ed if the collation +dll has changed, and updates the system settings table with the new dll name. +Configures a database that is being 'Open'ed according to the operations +specified in its configuration file, if such a file exists and has not yet +been processed, and updates the system settings table with the version of +the file that was processed. + +@internalComponent +*/ +NONSHARABLE_CLASS(TSqlDbSysSettings) + { +public: + TSqlDbSysSettings(sqlite3* aDbHandle); + + void StoreSecurityPolicyL(const CSqlSecurityPolicy& aSecurityPolicyCon); + void StoreSettingsL(const TDesC& aDbName, const TDesC& aCollationDllName, TInt aDbConfigFileVersion, TSqlCompactionMode aCompactionMode); + + void LoadSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon); + void LoadSettingsL(const TDesC& aDbName, TDes& aCollationDllName, TInt& aDbConfigFileVersion, TSqlCompactionMode& aCompactionMode); + + void ReindexDatabaseL(const TDesC& aDbName, const TDesC& aCurrentCollationDllName); + void ConfigureDatabaseL(TInt aStoredDbConfigFileVersion, const TSqlSrvFileData& aFileData, const TDesC& aDbName); + +private: + void StoreSecurityPoliciesL(const CSqlSecurityPolicy& aSecurityPolicyCon); + void StoreSecurityPolicyL(sqlite3_stmt* aStmtHandle, TInt aObjType, const TDesC& aObjName, + TInt aPolicyType, const TSecurityPolicy& aPolicy); + TInt BindSecurityPolicyPrm(sqlite3_stmt* aStmtHandle, TInt aObjType, const TDesC& aObjName, + TInt aPolicyType, const TSecurityPolicy& aPolicy); + TSecurityPolicy ReadCurrSecurityPolicyL(sqlite3_stmt* aStmtHandle, TInt& aObjType, TPtrC& aObjName, TInt& aPolicyType); + void StoreDefaultSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, const TSecurityPolicy& aPolicy, TInt aDbPolicySetFlag); + void StoreDbSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, TInt aPolicyType, + const TSecurityPolicy& aPolicy, TInt& aDbPolicySetFlag); + void StoreDbObjSecurityPolicyL(CSqlSecurityPolicy& aSecurityPolicyCon, TInt aObjType, const TDesC& aObjName, + TInt aPolicyType, const TSecurityPolicy& aPolicy); + + void GetSettingsL(const TDesC& aDbName, TDes& aCollationDllName, TInt& aDbConfigFileVersion, TInt& aSettingsVersion, TSqlCompactionMode& aCompactionMode); + TBool SettingsTableExistsL(const TDesC& aDbName); + TBool IndexExistsL(const TDesC& aDbName, const TDesC& aCollationName); + + void ExecuteConfigurationUpdateL(const TSqlSrvFileData& aFileData, const TDesC& aMatchingConfigFile, + TInt aDbConfigFileVersion, const TDesC& aDbName); + void DoExecuteDbConfigFileOpsL(RFs& aFs, const TDesC& aConfigFilePath, const TDesC& aDbName); + void ParseFileL(const TDesC& aBuffer, const TDesC& aDbName); + void ProcessStatementL(const TDesC& aLine, const TDesC& aDbName); + +private: + sqlite3* iDbHandle; + }; + +#endif//__SQLSRVDBSYSSETTINGS_H__