persistentstorage/sql/SRC/Server/SqlSrvDbSysSettings.h
changeset 0 08ec8eefde2f
child 15 fcc16690f446
--- /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__