persistentstorage/dbms/sdbms/SD_DBS.CPP
changeset 0 08ec8eefde2f
--- /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<TDbWindow> 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);
+	}