srsf/nssvasapi/nssvasdb/inc/nssvasrvasdbsession.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:29:17 +0100
branchRCL_3
changeset 19 e36f3802f733
parent 0 bf1d17376201
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2005 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:  RVasDbSession is the client-side(proxy) interface through which 
*               communication with the vasdb server is channelled.
*
*/

#ifndef RNSSVASDBSESSION_H
#define RNSSVASDBSESSION_H


#include "nssvascvasdbsrvdef.h"
#include "nssvasdbkonsts.h"
#include "nssvascvasdbdataexchanger.h"
#include "nssvasccontext.h"
#include "nssvasccontext.h"
#include "nssvasctag.h"
#include "nssvascvasdb.h"

// FORWARD DECLARATIONS
class CNssVasDb;

// CLASS DECLARATION

/**
*
*  The RVasDbSession class definition. 
* 
*  @lib NssVASApi.lib
*  @since 2.0
*/
class RNssVasDbSession
    {
	// Functions
public:

    /**
    * C++ 1st phase constructor
    */
	RNssVasDbSession();	

    /**
    * C++ destructor
    */
    ~RNssVasDbSession();
	
    /**
    * A method to create a new database. The name of the database file
    * is read from a resource file (NssVasResource.rsc).
    * @since 2.8
    * @return KErrNone or a Symbian-wide error code.
    */
	TInt  CreateDatabase();

    /**
    * A method to open the database. The name of the database file
    * is read from a resource file (NssVasResource.rsc).
    * @since 2.8
    * @return KErrNone or a Symbian-wide error code.
    */
	TInt  OpenDatabase();	

    /**
    * A method to close the database.
    * @since 2.8
    * @return KErrNone or a Symbian-wide error code.
    */
	TInt  CloseDatabase ();

    /**
    * A method to get the model bank id and lexicon id.
    * @since 2.8
    * @param aModelBankId Model Bank ID will be returned here.
    * @param aLexiconId Lexicon ID will be returned here.
    * @return ETrue if success, otherwise EFalse.
    */
    TBool ModelBankIdLexiconId( TUint32 &iModelBankId, TUint32 &iLexiconId );

    /**
    * A method to check whether a context is empty or not.
    * @since 2.8
    * @param aContextId Unique identifier of the context.
    * @return ETrue if there are tags, EFalse if the context is empty.
    */
    TBool TagExist( TInt aContextId );

    /**
    * Method to return the number of tags in a context.
    * @since 2.8
    * @param aContextId Unique identifier of the context.
    * @return KErrNone or a Symbian-wide error code.
    */
    TInt  TagCount( TInt aContextId );
	
    /**
    * Method to save a context. When a context is saved, a context ID is 
    * assigned to it. The newly assigned ID is returned
    * in the reference parameter.
    * @since 2.8
    * @param aContext Data of the context.
    * @param aContextId Reference for returning the newly assigned context ID.
    * @return KErrNone or a Symbian-wide error code.
    */
    //TInt SaveContext( TNssContext& aContext, TInt& aContextId );
	TInt SaveContext( CNssContext& aContext, TInt& aContextId );
    
    /**
    * Method to delete a context from the database.
    * @since 2.8
    * @param aName Name of the context to be deleted. 
    * @return KErrNone or a Symbian-wide error code.
    */
    TInt DeleteContext( const TDesC& aName );

    /**
    * Method to update the data of a context.
    * @since 2.8
    * @param aContext the context in serialized form.
    * @return KErrNone or a Symbian-wide error code.
    */
	//TInt UpdateContext( TNssContext& aContext );
	TInt UpdateContext( CNssContext& aContext );

    /**
    * Method to update the client data of a context.
    * @since 2.8
    * @param aContext the context in serialized form.
    * @return KErrNone or a Symbian-wide error code.
    */
    //TInt UpdateContextClientData( TNssContext& aContext );
    TInt UpdateContextClientData( CNssContext& aContext );

    /**
    * Method to get a context by name.
    * @since 2.8
    * @param aName Name of the context
    * @return Array containing the context, or NULL if it is not found.
    */
    //TNssContextListArray* GetContextByName( const TDesC& aName );
    CArrayPtrFlat<CNssContext>* GetContextByName( const TDesC& aName );

    /**
    * Method to list all global contexts.
    * @since 2.8
    * @return Array containing all global contexts.
    */
    //TNssContextListArray* GetGlobalContexts();
    CArrayPtrFlat<CNssContext>* GetGlobalContexts();

    /**
    * Method to list all contexts.
    * @since 2.8
    * @return Array containing all contexts.
    */
    //TNssContextListArray* GetAllContexts();
    CArrayPtrFlat<CNssContext>* GetAllContexts();

    /**
    * Method to save a tag. During saving, a Tag ID is assigned for the tag.
    * This ID is returned in the refrence parameter.
    * @since 2.8
    * @param aTag Tag
    * @param aNewId This variable is used to return the newly asssigned
    *               Tag ID for the user.
    * @return KErrNone or a Symbian-wide error code.
    */
	//TInt SaveTag( TNssTag& aTag, TInt& aNewId );
	TInt SaveTag( CNssTag& aTag, TInt& aNewId );

    /**
    * Method to save a group of tags. During saving, a Tag IDs are assigned
    * for the tags. These IDs is returned in the aTagIdArray.
    * @since 2.8
    * @param aTagArray An array of previously unsaved tags.
    * @param aTagIdArray Empty array, which will be filled with
    *                    newly assigned Tag IDs.
    * @return KErrNone or a Symbian-wide error code.
    */
	//TInt SaveTags( CArrayFixFlat<TNssTag>* aTagArray, RArray<TInt>& aTagIdArray );
	TInt SaveTags( CArrayPtrFlat<CNssTag>* aTagArray, RArray<TInt>& aTagIdArray );

    /**
    * Method to delete a tag by name
    * @since 2.8
    * @param aTagName Trained text of the tag ( MNssSpeechItem::SetTextL() )
    * @return KErrNone or a Symbian-wide error code.
    */
    TInt DeleteTag( const TDesC& aTagName );

    /**
    * Method to delete a tag.
    * @since 2.8
    * @param aTagId Tag identifier.
    * @return KErrNone or a Symbian-wide error code.
    */
    TInt DeleteTag( TInt aTagId );

    /**
    * Method to delete a group of tags.
    * @since 2.8
    * @param aTagIdArray Array of tag identifiers.
    * @return KErrNone or a Symbian-wide error code.
    */
	TInt DeleteTags( const RArray<TUint32>& aTagIdArray );

    /**
    * Method to update the information of an existing tag.
    * @since 2.8
    * @param aTag New information about the tag
    * @return KErrNone or a Symbian-wide error code.
    */
	//TInt UpdateTag( const TNssTag& aTag );
	TInt UpdateTag( const CNssTag& aTag );

    /**
    * Method to get references to all tags in a context.
    * @since 2.8
    * @param aContextId Context identifier.
    * @return Array containing references to all tags.
    */
	TNssTagReferenceListArray* GetTagReferenceList( TInt aContextId );

    /**
    * Method to get all tags in a context.
    * @since 2.8
    * @param aContext The context
    * @return Array containing all tags in the context
    */
    //TNssTagListArray* GetTag( const TNssContext& aContext );
    CArrayPtrFlat<CNssTag>* GetTag( const CNssContext& aContext );

    /**
    * Method to get a tag by grammar ID and rule ID.
    * @since 2.8
    * @param aGrammarIdRuleId Structure containing the Grammar ID (which
    *                         specifies a context) and Rule ID (which
    *                         specifies a tag inside a context).
    * @return Array containing the matching tag or NULL.
    */
    //TNssTagListArray* GetTag( TNssGrammarIdRuleId aGrammarIdRuleId );
    CArrayPtrFlat<CNssTag>* GetTag( TNssGrammarIdRuleId aGrammarIdRuleId );
    
    /**
    * Method to get tags by their grammar ID and rule ID.
    * @since 2.8
    * @param aGrammarIdRuleIds Structure containing the Grammar IDs (that
    *                          specify a context) and Rule IDs (that
    *                          specify a tag inside a context).
    * @return Array containing the matching tags or NULL.
    */
    //TNssTagListArray* GetTags( TNssGrammarIdRuleIdListArray& aGrammarIdRuleIds );
    CArrayPtrFlat<CNssTag>* GetTags( TNssGrammarIdRuleIdListArray& aGrammarIdRuleIds );

    /**
    * Method to get a tag by name (CNssSpeechItem::SetText).
    * @since 2.8
    * @param aName Tag's trained text.
    * @return Array containing all matching tags.
    */
	//TNssTagListArray* GetTag( const TDesC& aName );
	CArrayPtrFlat<CNssTag>* GetTag( const TDesC& aName );

    /**
    * Method to get a tag by RRD data, given RRD integer and the position (0-4)
    * to which the integer is compared.
    * @since 2.8
    * @param aContextId ID of the context, to which the tag belongs.
    * @param aNum Integer, which should match the RRD integer.
    * @param aPosition RRD integer array position (0-4).
    * @return Array containing all matching tags.
    */
	//TNssTagListArray* GetTag( TInt aContextId, TInt aNum, TInt aPosition );
	CArrayPtrFlat<CNssTag>* GetTag( TInt aContextId, TInt aNum, TInt aPosition );

    /**
    * Method to get a tag by RRD data, given RRD text and the position (0-4)
    * to which the text is compared.
    * @since 2.8
    * @param aContextId ID of the context, to which the tag belongs.
    * @param aText Text, which should match the RRD text.
    * @param aPosition RRD text array position (0-4).
    * @return Array containing all matching tags.
    */
	//TNssTagListArray* GetTag( TInt aContextId, TDesC& aText, TInt aPosition );
	CArrayPtrFlat<CNssTag>* GetTag( TInt aContextId, 
	                                const TDesC& aText, TInt aPosition );

    /**
    * Method to get a tag, given the tag ID.
    * @since 2.8
    * @param aTagId The ID of the tag.
    * @return Array containing the tag or NULL.
    */
	//TNssTagListArray* GetTag( TUint32 aTagId );
	CArrayPtrFlat<CNssTag>* GetTag( TUint32 aTagId );

    /**
    * Method to update the Rule IDs of some tags.
    * @since 2.8
    * @param aRetrainedTags Array of tags with changed Rule IDs
    * @return symbian-wide error code
    */
    TInt UpdateTagRuleIDs( const RArray<TNssSpeechItem>& aRetrainedTags );

    /**
    * Method to get the default model bank id
    * @since 2.8
    * @param aId reference where to put the model bank Id
    * @return symbian-wide error code
    */
    TInt GetDefaultModelBankId( TUint32& aId );

    /**
    * Modifies the context table so that all contexts start using
    * the new id as their model bank id.
    * @since 2.8
    * @param aNewId new model bank id
    * @return symbian-wide error code
    */
    TInt ResetModelBank( TUint32 aNewId );

private:

    // Pointer to the object, which makes the actual operations on database.
    CNssVasDb* iVasDb;

    // How many VAS instances in this thread have connected.
    TInt iConnected;
    };

#endif