diff -r 000000000000 -r 08ec8eefde2f persistentstorage/dbms/sdbms/SD_DBS.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/dbms/sdbms/SD_DBS.CPP Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,193 @@ +// Copyright (c) 1998-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: +// DBMS server proxy database +// +// + +#include "SD_STD.H" + +// Class CDbsDatabase + + +/** +SYMBIAN_REMOVE_TRIVIAL_ENCRYPTION version of the method. +Standard phase-one factory method for creation of CDbsDatabase instances. +@param aDbs A reference to the client side DBMS session object +@param aDatabase Database file path +@param aFormat Database format string +@return A pointer to teh created CDbsDatabase instance. +@leave System-wide error code, including KErrNoMemory +*/ +CDbsDatabase* CDbsDatabase::NewL(const RDbs& aDbs, const TDesC& aDatabase, const TDesC& aFormat) + { + CDbsDatabase* self=new(ELeave) CDbsDatabase; + CleanupStack::PushL(self); + + TIpcArgs args(&aDatabase,&aFormat,TIpcArgs::ENothing,NULL); + self->ConstructL(aDbs,args); // two phase construction + CleanupStack::Pop(); // self + return self; + } + +/** +SYMBIAN_REMOVE_TRIVIAL_ENCRYPTION version of the method. +Standard phase-two construction method for creation of CDbsDatabase instances. +@param aDbs A reference to the client side DBMS session object +@param aArgs A reference to the packed parameters needed for the database instance creation. +@leave System-wide error code, including KErrNoMemory +*/ +void CDbsDatabase::ConstructL(const RDbs& aDbs, TIpcArgs& aArgs) + { + iObject.OpenL(aDbs,EDbsOpenDatabase,aArgs); + } + + +CDbsDatabase::~CDbsDatabase() + { + iObject.Close(); + } + +TInt CDbsDatabase::Destroy() + { + return iObject.SendReceive(EDbsDatabaseDestroy); + } + +TInt CDbsDatabase::Begin() + { + return iObject.SendReceive(EDbsDatabaseBegin); + } + +TInt CDbsDatabase::Commit() + { + return iObject.SendReceive(EDbsDatabaseCommit); + } + +void CDbsDatabase::Rollback() + { + iObject.SendReceive(EDbsDatabaseRollback); + } + +TInt CDbsDatabase::Property(CDbDatabase::TProperty aProperty) + { + return iObject.SendReceive(EDbsDatabaseProperty,TIpcArgs(aProperty)); + } + +void CDbsDatabase::CreateTableL(const TDesC& aName,const CDbColSet& aColSet,const CDbKey* aPrimaryKey) + { + TPtrC8 colset(TDbsParam::PrepareLC(aColSet)); + TIpcArgs m(&aName,&colset,0); + TPtrC8 primary; + if (aPrimaryKey) + { + primary.Set(TDbsParam::PrepareLC(*aPrimaryKey)); + m.Set(2,&primary); + } + iObject.SendReceiveL(EDbsDatabaseCreateTable,m); + if (aPrimaryKey) + CleanupStack::PopAndDestroy(); // primary + CleanupStack::PopAndDestroy(); // colset + } + +void CDbsDatabase::TablesL(CDbTableNames& aNames) + { + TIpcArgs m; + RReadStream in(HDbsBuf::NewLC(iObject,EDbsDatabaseTables,m)); + in>>aNames; + CleanupStack::PopAndDestroy(); // dbsbuf + } + +void CDbsDatabase::ColumnsL(CDbColSet& aColSet,const TDesC& aName) + { + TIpcArgs m(&aName); + RReadStream in(HDbsBuf::NewLC(iObject,EDbsDatabaseColumns,m)); + in>>aColSet; + CleanupStack::PopAndDestroy(); + } + +void CDbsDatabase::IndexesL(CDbIndexNames& aNames,const TDesC& aTable) + { + TIpcArgs m(&aTable); + RReadStream in(HDbsBuf::NewLC(iObject,EDbsDatabaseIndexes,m)); + in>>aNames; + CleanupStack::PopAndDestroy(); // dbsbuf + } + +void CDbsDatabase::KeysL(CDbKey& aKey,const TDesC& aName,const TDesC& aTable) + { + TIpcArgs args(&aName,&aTable); + RReadStream in(HDbsBuf::NewLC(iObject,EDbsDatabaseKeys,args)); + in>>aKey; + CleanupStack::PopAndDestroy(); // dbsbuf + } + +CDbNotifier* CDbsDatabase::OpenNotifierL() + { + return CDbsNotifier::NewL(iObject); + } + +CDbIncremental* CDbsDatabase::OpenUtilityL(CDbDatabase::TUtility aType,TInt& aStep) + { + TIpcArgs args(aType); + return CDbsIncremental::NewL(iObject,EDbsDatabaseOpenUtility,args,aStep); + } + +CDbIncremental* CDbsDatabase::OpenDropTableL(const TDesC& aTable,TInt& aStep) + { + TIpcArgs args(&aTable); + return CDbsIncremental::NewL(iObject,EDbsDatabaseOpenDropTable,args,aStep); + } + +CDbIncremental* CDbsDatabase::OpenAlterTableL(const TDesC& aTable,const CDbColSet& aNewDef,TInt& aStep) + { + TPtrC8 colset(TDbsParam::PrepareLC(aNewDef)); + TIpcArgs args(&aTable,&colset); + CDbIncremental* inc=CDbsIncremental::NewL(iObject,EDbsDatabaseOpenAlterTable,args,aStep); + CleanupStack::PopAndDestroy(); // colset + return inc; + } + +CDbIncremental* CDbsDatabase::OpenCreateIndexL(const TDesC& aName,const TDesC& aTable,const CDbKey& aKey,TInt& aStep) + { + TPtrC8 key(TDbsParam::PrepareLC(aKey)); + TIpcArgs args(&aName,&aTable,&key); + CDbIncremental* inc=CDbsIncremental::NewL(iObject,EDbsDatabaseOpenCreateIndex,args,aStep); + CleanupStack::PopAndDestroy(); // key + return inc; + } + +CDbIncremental* CDbsDatabase::OpenDropIndexL(const TDesC& aName,const TDesC& aTable,TInt& aStep) + { + TIpcArgs args(&aName,&aTable); + return CDbsIncremental::NewL(iObject,EDbsDatabaseOpenDropIndex,args,aStep); + } + +CDbIncremental* CDbsDatabase::OpenExecuteL(const TDesC& aSql,TDbTextComparison aComparison,TInt& aInit) + { + TIpcArgs args(&aSql,aComparison); + return CDbsIncremental::NewL(iObject,EDbsDatabaseExecute,args,aInit); + } + +CDbCursor* CDbsDatabase::PrepareViewL(const TDbQuery& aQuery,const TDbWindow& aWindow,RDbRowSet::TAccess aAccess) + { + const TDesC& des = aQuery.Query(); + TPckgC pckg(aWindow); + TIpcArgs args(&des,aQuery.Comparison()|(aAccess<<8),&pckg); + return CDbsCursor::NewL(iObject,EDbsDatabasePrepareView,args); + } + +CDbCursor* CDbsDatabase::OpenTableL(const TDesC& aName,RDbRowSet::TAccess aAccess) + { + TIpcArgs args(&aName,aAccess); + return CDbsCursor::NewL(iObject,EDbsDatabaseOpenTable,args); + }