smf/smfcredentialmgr/smfcredmgrserver/src/smfcredmgrdb.cpp
author cgandhi <chandradeep.gandhi@sasken.com>
Wed, 23 Jun 2010 19:51:49 +0530
changeset 14 a469c0e6e7fb
child 18 013a02bf2bb0
permissions -rw-r--r--
changes for SmfPost, SmfCredentialMgr, PLuginManager, SmfServer. Adding Sample Plugins and Sample Client Applications.

/**
 * 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;
	}