diff -r cad71a31b7fc -r e36f3802f733 srsf/nssvasapi/nssvasdb/src/nssvasrvasdbsession.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/srsf/nssvasapi/nssvasdb/src/nssvasrvasdbsession.cpp Wed Sep 01 12:29:17 2010 +0100 @@ -0,0 +1,556 @@ +/* +* Copyright (c) 2004-2006 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: RNssVasDbSession is the client-side(proxy) interface through which +* communication with the vasdb server is channelled. +* +*/ + + +#include "nssvasrvasdbsession.h" +#include "nssvascvasdb.h" + +// Complementary macro for TRAPD: +// TRAPD( err, doSomething() ); +// REACT( err, return( err ) ); +#define REACT(a,b) if ( a < 0 ) {b;} + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::RNssVasDbSession +// C++ constructor +// ----------------------------------------------------------------------------- +// +RNssVasDbSession::RNssVasDbSession() + { + iConnected = 0; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::~RNssVasDbSession +// C++ destructor. +// ----------------------------------------------------------------------------- +// +RNssVasDbSession::~RNssVasDbSession() + { + delete iVasDb; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::CreateDatabase +// Method to create the database. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::CreateDatabase() + { + TRAPD( error, iVasDb->CreateDatabaseL() ); + + return error; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::OpenDatabase +// Method to open the database. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::OpenDatabase() + { + if ( iConnected ) + { + iConnected++; + return KErrDbAlreadyOpen; + } + + TRAPD( error, iVasDb->OpenDatabaseL() ); + + if ( error == KErrNone ) + { + iConnected++; + } + + return error; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::CloseDatabase +// Method to close the database. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::CloseDatabase() + { + // Check if already closed (or never opened) + if ( iConnected <= 0 ) + { + return( KErrNone ); + } + + // Some other VAS instance in the same thread may be using the database. + iConnected--; + + // If not, close it. + if ( iConnected <= 0 ) + { + return iVasDb->CloseDatabase(); + } + + return( KErrNone ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::ModelBankIdLexiconId +// A method to get the model bank id and lexicon id. +// ----------------------------------------------------------------------------- +// +TBool RNssVasDbSession::ModelBankIdLexiconId( TUint32& aModelBankId, TUint32& aLexiconId ) + { + TBool ret = EFalse; + + TRAPD( err, ret = iVasDb->GetModelBankIdLexiconIdL( aModelBankId, aLexiconId ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::TagExist +// Method to check whether the context has tags or it is empty. +// ----------------------------------------------------------------------------- +// +TBool RNssVasDbSession::TagExist(TInt aContextId) + { + TBool tagExists = EFalse; + + TRAPD( err, tagExists = iVasDb->TagExistL( aContextId ) ); + REACT( err, tagExists = EFalse ); + + return( tagExists ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::TagCount +// Method to return the number of tags in a context. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::TagCount(TInt aContextId) + { + TInt ret = 0; + + TRAPD( err, ret = iVasDb->TagCountL( aContextId ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::SaveContext +// Method to save a context. When a context is saved, a context ID is +// assigned to it. The newly assigned ID is returned +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::SaveContext( CNssContext& aContext, TInt& aContextId ) + { + TRAPD( error, iVasDb->SaveContextL( aContext, aContextId ) ); + + return error; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::UpdateContext +// Method to update the data of a context. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::UpdateContext(CNssContext& aContext) + { + TInt ret = KErrNone; + + TRAP( ret, iVasDb->UpdateContextL( aContext ) ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::UpdateContextClientData +// Method to update the client data of a context. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::UpdateContextClientData(CNssContext& aContext) + { + TInt ret = KErrNone; + + TRAP( ret, iVasDb->UpdateContextClientDataL( aContext ) ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetContextByName +// Method to get a context by name. +// ----------------------------------------------------------------------------- +// +CArrayPtrFlat* RNssVasDbSession::GetContextByName(const TDesC& aName) + { + //CArrayFixFlat* res = 0; + CArrayPtrFlat* res = 0; + + TRAPD( err, res = iVasDb->GetContextByNameL( aName ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetAllGlobalContexts +// Method to list all global contexts. +// ----------------------------------------------------------------------------- +// +//CArrayFixFlat* RNssVasDbSession::GetGlobalContexts() +CArrayPtrFlat* RNssVasDbSession::GetGlobalContexts() + { + //CArrayFixFlat* res = 0; + CArrayPtrFlat* res = 0; + + TRAPD( err, res = iVasDb->GetGlobalContexts() ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetAllContexts +// Method to list all contexts. +// ----------------------------------------------------------------------------- +// +//CArrayFixFlat* RNssVasDbSession::GetAllContexts() +CArrayPtrFlat* RNssVasDbSession::GetAllContexts() + { + //CArrayFixFlat* res = 0; + CArrayPtrFlat* res = 0; + + TRAPD( err, res = iVasDb->GetAllContexts() ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get all tags in a context. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( const TNssContext& aContext ) +CArrayPtrFlat* RNssVasDbSession::GetTag( const CNssContext& aContext ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aContext ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get a tag by grammar ID and rule ID. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( TNssGrammarIdRuleId aGrammarIdRuleId ) +CArrayPtrFlat* RNssVasDbSession::GetTag( TNssGrammarIdRuleId aGrammarIdRuleId ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aGrammarIdRuleId ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTags +// Method to get tags by their grammar ID and rule ID. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTags( TNssGrammarIdRuleIdListArray& aGrammarIdRuleIds ) +CArrayPtrFlat* RNssVasDbSession::GetTags( + TNssGrammarIdRuleIdListArray& aGrammarIdRuleIds ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagsL( aGrammarIdRuleIds ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get a tag by name (CNssSpeechItem::SetText). +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( const TDesC& aName ) +CArrayPtrFlat* RNssVasDbSession::GetTag( const TDesC& aName ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aName ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get a tag by RRD data, given RRD integer and the position (0-4) +// to which the integer is compared. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( TInt aContextId, TInt aNum, TInt aPosition ) +CArrayPtrFlat* RNssVasDbSession::GetTag( TInt aContextId, TInt aNum, TInt aPosition ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aContextId, aNum, aPosition ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get a tag by RRD data, given RRD text and the position (0-4) +// to which the text is compared. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( TInt aContextId, TDesC& aText, TInt aPosition ) +CArrayPtrFlat* RNssVasDbSession::GetTag( TInt aContextId, + const TDesC& aText, TInt aPosition ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aContextId, aText, aPosition ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTag +// Method to get a tag, given the tag ID. +// ----------------------------------------------------------------------------- +// +//TNssTagListArray* RNssVasDbSession::GetTag( TUint32 aTagId ) +CArrayPtrFlat* RNssVasDbSession::GetTag( TUint32 aTagId ) + { + //TNssTagListArray* res = NULL; + CArrayPtrFlat* res = NULL; + + TRAPD( err, res = iVasDb->GetTagL( aTagId ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( res ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::SaveTag +// Method to save a tag. During saving, a Tag ID is assigned for the tag. +// This ID is returned in the refrence parameter. +// ----------------------------------------------------------------------------- +// +//TInt RNssVasDbSession::SaveTag( TNssTag& aTag, TInt& aNewId ) +TInt RNssVasDbSession::SaveTag( CNssTag& aTag, TInt& aNewId ) + { + TInt ret = 0; + + TRAPD( err, iVasDb->SaveTagL( aTag, aNewId ) ); + REACT( err, ret = err ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::SaveTags +// Method to save a group of tags. During saving, a Tag IDs are assigned +// for the tags. These IDs is returned in the aTagIdArray. +// ----------------------------------------------------------------------------- +// +//TInt RNssVasDbSession::SaveTags( CArrayFixFlat* aTagArray, RArray& aTagIdArray ) +TInt RNssVasDbSession::SaveTags( CArrayPtrFlat* aTagArray, RArray& aTagIdArray ) + { + TRAPD( ret, iVasDb->SaveTagsL( aTagArray, aTagIdArray ) ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::DeleteTag +// Method to delete a group of tags. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::DeleteTags( const RArray& aTagIdArray ) + { + TRAPD( ret, iVasDb->DeleteTagsL( aTagIdArray ) ); + + return ret; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::UpdateTag +// Method to update the information of an existing tag. +// ----------------------------------------------------------------------------- +// +//TInt RNssVasDbSession::UpdateTag( const TNssTag& /*aTag*/ ) +TInt RNssVasDbSession::UpdateTag( const CNssTag& /*aTag*/ ) + { + return KErrNotSupported; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::UpdateTagRuleIDs +// Method to update the Rule IDs of some tags. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::UpdateTagRuleIDs( const RArray& aRetrainedTags ) + { + TRAPD( ret, iVasDb->UpdateTagRuleIDsL( aRetrainedTags ) ); + return( ret ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::DeleteTag +// Method to delete a tag by name. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::DeleteTag( const TDesC& aTagName ) + { + TRAPD( error, iVasDb->DeleteTagL( aTagName ) ); + + return( error ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::DeleteTag +// Method to delete a tag by identifier. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::DeleteTag( TInt aTagId ) + { + TRAPD( error, iVasDb->DeleteTagL( aTagId ) ); + + return( error ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::DeleteContext +// Method to delete a context from the database. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::DeleteContext( const TDesC& aName ) + { + TRAPD( err, iVasDb->DeleteContextL( aName ) ); + + return( err ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetTagReferenceList +// Method to get references to all tags in a context. +// ----------------------------------------------------------------------------- +// +TNssTagReferenceListArray* RNssVasDbSession::GetTagReferenceList( TInt aContextId ) + { + TNssTagReferenceListArray* result = 0; + + TRAPD( err, result = iVasDb->GetTagReferenceListL( aContextId ) ); + + // To remove warning + if ( err != KErrNone ) + { + } + + return( result ); + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::GetDefaultModelBankId +// Method to get the default model bank id +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::GetDefaultModelBankId( TUint32& aId ) + { + TRAPD( err, iVasDb->GetDefaultModelBankIdL( aId ) ); + return err; + } + +// ----------------------------------------------------------------------------- +// RNssVasDbSession::ResetModelBank +// Modifies the context table so that all contexts start using +// the new id as their model bank id. +// ----------------------------------------------------------------------------- +// +TInt RNssVasDbSession::ResetModelBank( TUint32 aNewId ) + { + TRAPD( err, iVasDb->ResetModelBankL( aNewId ) ); + return err; + }