srsf/nssvasapi/nssvasdb/src/nssvasrvasdbsession.cpp
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
--- /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<CNssContext>* RNssVasDbSession::GetContextByName(const TDesC& aName)
+    {
+    //CArrayFixFlat<CNssContext>* res = 0;
+    CArrayPtrFlat<CNssContext>* 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<CNssContext>* RNssVasDbSession::GetGlobalContexts()
+CArrayPtrFlat<CNssContext>* RNssVasDbSession::GetGlobalContexts()
+    {
+    //CArrayFixFlat<CNssContext>* res = 0;
+    CArrayPtrFlat<CNssContext>* res = 0;
+
+    TRAPD( err, res = iVasDb->GetGlobalContexts() );
+
+    // To remove warning
+    if ( err != KErrNone )
+        {
+        }
+
+    return( res );
+    }
+
+// -----------------------------------------------------------------------------
+// RNssVasDbSession::GetAllContexts
+// Method to list all contexts.
+// -----------------------------------------------------------------------------
+//
+//CArrayFixFlat<CNssContext>* RNssVasDbSession::GetAllContexts()
+CArrayPtrFlat<CNssContext>* RNssVasDbSession::GetAllContexts()
+    {
+    //CArrayFixFlat<CNssContext>* res = 0;
+    CArrayPtrFlat<CNssContext>* 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<CNssTag>* RNssVasDbSession::GetTag( const CNssContext& aContext )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTag( TNssGrammarIdRuleId aGrammarIdRuleId )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTags( 
+                        TNssGrammarIdRuleIdListArray& aGrammarIdRuleIds )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTag( const TDesC& aName )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTag( TInt aContextId, TInt aNum, TInt aPosition )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTag( TInt aContextId, 
+                                                  const TDesC& aText, TInt aPosition )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<CNssTag>* RNssVasDbSession::GetTag( TUint32 aTagId )
+    {
+    //TNssTagListArray* res = NULL;
+    CArrayPtrFlat<CNssTag>* 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<TNssTag>* aTagArray, RArray<TInt>& aTagIdArray )
+TInt RNssVasDbSession::SaveTags( CArrayPtrFlat<CNssTag>* aTagArray, RArray<TInt>& aTagIdArray )
+    {
+    TRAPD( ret, iVasDb->SaveTagsL( aTagArray, aTagIdArray ) );
+
+    return ret;
+    }
+
+// -----------------------------------------------------------------------------
+// RNssVasDbSession::DeleteTag
+// Method to delete a group of tags.
+// -----------------------------------------------------------------------------
+//
+TInt RNssVasDbSession::DeleteTags( const RArray<TUint32>& 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<TNssSpeechItem>& 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;
+    }