smf/smfcredentialmgr/smfcredmgrserver/src/smfcredmgrdb.cpp
changeset 14 a469c0e6e7fb
child 18 013a02bf2bb0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/smf/smfcredentialmgr/smfcredmgrserver/src/smfcredmgrdb.cpp	Wed Jun 23 19:51:49 2010 +0530
@@ -0,0 +1,147 @@
+/**
+ * SmfCredMgrDb.cpp
+ *
+ *  Created on: Apr 27, 2010
+ *      Author: pritam
+ */
+
+#include "smfcredmgrdb.h"
+#include <BAUTILS.H>
+
+CSmfCredMgrDb* CSmfCredMgrDb::NewL()
+	{
+	CSmfCredMgrDb* self = CSmfCredMgrDb::NewLC();
+	CleanupStack::Pop(self);
+	return (self);
+	}
+
+CSmfCredMgrDb* CSmfCredMgrDb::NewLC()
+	{
+	CSmfCredMgrDb* self = new (ELeave) CSmfCredMgrDb();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return (self);
+	}
+
+CSmfCredMgrDb::CSmfCredMgrDb()
+	{
+	RDebug::Printf("in constructor db");
+	}
+
+void CSmfCredMgrDb::ConstructL()
+	{
+	//create db file 
+	TInt err = iFileSession.Connect();
+	User::LeaveIfError(err);
+
+	err = iFileSession.MkDirAll(KSmfCredMgrDbPrivateDir);
+
+	TFileName dbFileName = KSmfCredMgrDbPrivateDir();
+	dbFileName.Append(KSmfCredMgrDbFileName);
+	iDbFilePathName = dbFileName;
+	if (!BaflUtils::FileExists(iFileSession, dbFileName))
+		{
+		err = iFileSession.SetSessionToPrivate(EDriveC);
+
+		// no database exists so we make one
+		CompleteDBCreationL(dbFileName);
+		}
+	else if (BaflUtils::FileExists(iFileSession, dbFileName))
+		{
+		
+		//Reset if necessary
+		}
+
+	}
+
+CSmfCredMgrDb::~CSmfCredMgrDb()
+	{
+	//delete db file
+
+	iDataBase.Close();
+	iFileSession.Close();
+	RDebug::Printf("in destructor db");
+	}
+
+void CSmfCredMgrDb::CompleteDBCreationL(const TFileName &aFileName)
+	{
+	User::LeaveIfError(CreateDbFile(aFileName));
+	User::LeaveIfError(PluginIDTableCreate());
+	User::LeaveIfError(URLTableCreate());
+	User::LeaveIfError(RegTokenValidityTableCreate());
+	User::LeaveIfError(AuthParamsTableCreate());
+	}
+
+TInt CSmfCredMgrDb::CreateDbFile(const TFileName &aFileName)
+	{
+	TInt err(KErrNone);
+	err = iDataBase.Create(aFileName);
+	if (err != KErrNone)
+		{
+		//the empty file is deleted in case of error
+		DeleteDbFile(aFileName);
+		}
+	return err;
+
+	}
+
+TInt CSmfCredMgrDb::PluginIDTableCreate()
+	{
+	TInt err(KErrNone);
+	err = iDataBase.Exec(KCreatePluginIDTable);
+	if (err >= 0)
+		{
+		return KErrNone;
+		}
+	//delete file in case of incomplete table creation
+	DeleteDbFile(iDbFilePathName);
+	return err;
+	}
+
+TInt CSmfCredMgrDb::URLTableCreate()
+	{
+	TInt err(KErrNone);
+	err = iDataBase.Exec(KCreateURLTable);
+	if (err >= 0)
+		{
+		return KErrNone;
+		}
+	//delete file in case of incomplete table creation
+	DeleteDbFile(iDbFilePathName);
+	return err;
+	}
+
+TInt CSmfCredMgrDb::RegTokenValidityTableCreate()
+	{
+	TInt err(KErrNone);
+	err = iDataBase.Exec(KCreateRegTokenValidityTable);
+	if (err >= 0)
+		{
+		return KErrNone;
+		}
+	//delete file in case of incomplete table creation
+	DeleteDbFile(iDbFilePathName);
+	return err;
+	}
+
+TInt CSmfCredMgrDb::AuthParamsTableCreate()
+	{
+	TInt err(KErrNone);
+	err = iDataBase.Exec(KCreateAuthParamsTable);
+	if (err >= 0)
+		{
+		return KErrNone;
+		}
+	//delete file in case of incomplete table creation
+	DeleteDbFile(iDbFilePathName);
+	return err;
+	}
+
+TInt CSmfCredMgrDb::DeleteDbFile(const TFileName &aFileName)
+	{
+	//close the sql handle before deleting
+	iDataBase.Close();
+	TInt err = iDataBase.Delete(aFileName);
+	return err;
+	}
+