mds_plat/metadata_engine_api/tsrc/inc/MdETestScripter.h
changeset 0 c53acadfccc6
child 19 82c0024438c8
equal deleted inserted replaced
-1:000000000000 0:c53acadfccc6
       
     1 /*
       
     2 * Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 #ifndef MDETESTSCRIPTER_H
       
    19 #define MDETESTSCRIPTER_H
       
    20 
       
    21 //  INCLUDES
       
    22 #include <e32cmn.h>
       
    23 #include <StifLogger.h>
       
    24 #include <TestScripterInternal.h>
       
    25 #include <StifTestModule.h>
       
    26 #include <mdesession.h>
       
    27 #include <mdequery.h>
       
    28 
       
    29 // CONSTANTS
       
    30 const TInt KPathPrefixLength( 2 );
       
    31 
       
    32 const TInt KLast = -1;
       
    33 
       
    34 const TInt KById = 0;
       
    35 const TInt KByUri = 1;
       
    36 const TInt KByGuid = 2;
       
    37 const TInt KByIds = 3;
       
    38 const TInt KByDef = 4;
       
    39 const TInt KByIndex = 5;
       
    40 
       
    41 const TInt KL = 0;
       
    42 const TInt KLC = 1;
       
    43 
       
    44 const TInt KAsync = 0;
       
    45 const TInt KSync = 1;
       
    46 
       
    47 const TInt ESession = 0;
       
    48 const TInt EObjectDef = 1;
       
    49 const TInt ERelationDef = 2;
       
    50 const TInt EPropertyDef = 3;
       
    51 const TInt EEventDef = 4;
       
    52 const TInt ENamespaceDef = 5;
       
    53 const TInt EObject = 6;
       
    54 const TInt ERelation = 7;
       
    55 const TInt EProperty = 8;
       
    56 const TInt EEvent = 9;
       
    57 
       
    58 // MACROS
       
    59 _LIT( KMdETestScripter, "MdETestScripter" );
       
    60 #if ( defined (__WINS__) || defined (__WINSCW__) )
       
    61 _LIT( KMdETestDataPath, "" );
       
    62 #else 
       
    63 _LIT( KMdETestDataPath, "\\testing" );
       
    64 #endif
       
    65 
       
    66 _LIT( KMdETestScripterLogPath, "\\logs\\testframework\\MdETestScripter\\" ); 
       
    67 
       
    68 // Log file
       
    69 _LIT( KMdETestScripterLogFile, "MdETestScripter.txt" ); 
       
    70 _LIT( KMdETestScripterLogFileWithTitle, "MdETestScripter_[%S].txt" );
       
    71 
       
    72 // Events
       
    73 // Events for schema
       
    74 _LIT( KMdESchemaModified, "ESchemaModified" );
       
    75 
       
    76 // Events for async request
       
    77 _LIT( KMdEItemsAsyncAdd, "EItemsAsyncAdd" );
       
    78 _LIT( KMdEObjectsAsyncAdd, "EObjectsAsyncAdd" );
       
    79 _LIT( KMdERelationsAsyncAdd, "ERelationsAsyncAdd" );
       
    80 _LIT( KMdEEventsAsyncAdd, "EEventsAsyncAdd" );
       
    81 
       
    82 _LIT( KMdEItemsAsyncUpdate, "EItemsAsyncUpdate" );
       
    83 _LIT( KMdEObjectsAsyncUpdate, "EObjectsAsyncUpdate" );
       
    84 _LIT( KMdERelationsAsyncUpdate, "ERelationsAsyncUpdate" );
       
    85 _LIT( KMdEEventsAsyncUpdate, "EEventsAsyncUpdate" );
       
    86 
       
    87 _LIT( KMdEObjectsAsyncRemoved, "EObjectsAsyncRemoved" );
       
    88 _LIT( KMdERelationsAsyncRemoved, "ERelationsAsyncRemoved" );
       
    89 _LIT( KMdEEventsAsyncRemoved, "EEventsAsyncRemoved" );
       
    90 
       
    91 
       
    92 // FUNCTION PROTOTYPES
       
    93 
       
    94 // FORWARD DECLARATIONS
       
    95 class CMdETestScripter;
       
    96 class CMdESession;
       
    97 class CMdENamespaceDef;
       
    98 class CMdEObject;
       
    99 class CMdEInstanceItem;
       
   100 class CMdEQuery;
       
   101 class CMdELogicCondition;
       
   102 class CMdETestScripterAO;
       
   103 
       
   104 // DATA TYPES
       
   105 
       
   106 // CLASS DECLARATION
       
   107 
       
   108 /**
       
   109 *  CMdETestScripter test class for STIF Test Framework TestScripter.
       
   110 *  ?other_description_lines
       
   111 *
       
   112 *  @lib ?library
       
   113 *  @since ?Series60_version
       
   114 */
       
   115 NONSHARABLE_CLASS(CMdETestScripter) : public CScriptBase,
       
   116                                       public MMdESchemaObserver,
       
   117                                       public MMdEObjectObserver,
       
   118                                       public MMdEObjectPresentObserver,
       
   119                                       public MMdERelationObserver,
       
   120                                       public MMdERelationItemObserver,
       
   121                                       public MMdERelationPresentObserver,
       
   122                                       public MMdESessionObserver,
       
   123                                       public MMdEEventObserver,
       
   124                                       public MMdEQueryObserver
       
   125     {
       
   126     friend class CMdETestScripterAO;
       
   127     public:  // Constructors and destructor
       
   128 
       
   129         /**
       
   130         * Two-phased constructor.
       
   131         */
       
   132         static CMdETestScripter* NewL( CTestModuleIf& aTestModuleIf );
       
   133 
       
   134         /**
       
   135         * Destructor.
       
   136         */
       
   137         virtual ~CMdETestScripter();
       
   138 
       
   139     public: // New functions
       
   140 
       
   141     public: // Functions from base classes
       
   142         virtual TInt RunMethodL( CStifItemParser& aItem );
       
   143 
       
   144     protected:  // New functions
       
   145 
       
   146 
       
   147     protected:  // Functions from base classes
       
   148 
       
   149 
       
   150     private:
       
   151 
       
   152         /**
       
   153         * C++ default constructor.
       
   154         */
       
   155         CMdETestScripter( CTestModuleIf& aTestModuleIf );
       
   156 
       
   157         /**
       
   158         * By default Symbian 2nd phase constructor is private.
       
   159         */
       
   160         void ConstructL();
       
   161 
       
   162         /**
       
   163         * Frees all resources allocated from test methods.
       
   164         * @since ?Series60_version
       
   165         */
       
   166         void Delete();
       
   167         
       
   168         template <class T> T* SanitizeArrayIndexL(
       
   169     		RPointerArray<T>& aArray, const CDesCArrayFlat& aNameArray, 
       
   170     		CStifItemParser& aItem );
       
   171         CMdEInstanceItem* GetInstanceItemByArrayIndexL(
       
   172             TInt aMode, CStifItemParser& aItem );
       
   173         void CheckTMdEObjectL( const TMdEObject& aTObject, const CMdEObject& aObject );
       
   174         void CheckTMdERelationL( const TMdERelation& aTRelation, const CMdERelation& aRelation );
       
   175         template <class T1, class T2> void CheckTInstanceL( const T1& aT1, const T2& aT2 );
       
   176         void CheckTMdEObjectArrayL(
       
   177             const RArray<TMdEObject>& aTObjects, TInt objIndex, TInt aCount );
       
   178         void CheckTMdERelationArrayL(
       
   179             const RArray<TMdERelation>& aTRelations, const TInt aObjIndex, const TInt aCount );
       
   180         template <class T> void CheckTItemIdArrayL(
       
   181             const RArray<TItemId>& aTItemIds, const RPointerArray<T>& aArray,
       
   182             const TInt aIndex, const TInt aCount );
       
   183         TInt CheckAsyncResultArrayL( TEventIf aEvent );
       
   184         void FormInstanceItemArrayL(
       
   185             CStifItemParser& aItem, RPointerArray<CMdEInstanceItem>& aItemArray ) const;
       
   186 
       
   187         /**
       
   188         * Test methods are listed below. 
       
   189         */
       
   190 
       
   191         // Observer add/remove test primitives
       
   192         virtual TInt AddSchemaObserverL( CStifItemParser& aItem );
       
   193         virtual TInt RemoveSchemaObserverL( CStifItemParser& aItem );
       
   194         virtual TInt AddObjectObserverL( CStifItemParser& aItem );
       
   195         virtual TInt RemoveObjectObserverL( CStifItemParser& aItem );
       
   196         virtual TInt AddObjectPresentObserverL( CStifItemParser& aItem );
       
   197         virtual TInt RemoveObjectPresentObserverL( CStifItemParser& aItem );
       
   198         virtual TInt AddRelationObserverL( CStifItemParser& aItem );
       
   199         virtual TInt RemoveRelationObserverL( CStifItemParser& aItem );
       
   200         virtual TInt AddRelationItemObserverL( CStifItemParser& aItem );
       
   201         virtual TInt RemoveRelationItemObserverL( CStifItemParser& aItem );
       
   202         virtual TInt AddRelationPresentObserverL( CStifItemParser& aItem );
       
   203         virtual TInt RemoveRelationPresentObserverL( CStifItemParser& aItem );
       
   204         virtual TInt AddEventObserverL( CStifItemParser& aItem );
       
   205         virtual TInt RemoveEventObserverL( CStifItemParser& aItem );
       
   206 
       
   207         // Notification resulated test primitives
       
   208         virtual TInt VerifyTItemIdsL( CStifItemParser& aItem );
       
   209         virtual TInt VerifyMdERelationsL( CStifItemParser& aItem );
       
   210         virtual TInt VerifyObserverNotificationTypeL( CStifItemParser& aItem );
       
   211 
       
   212         // Metadata/schema/namespace test primitives.
       
   213         virtual TInt ObjectDefCountL( CStifItemParser& aItem );
       
   214         virtual TInt ObjectDefL( CStifItemParser& aItem );
       
   215         virtual TInt GetObjectDefL( CStifItemParser& aItem );
       
   216         virtual TInt RelationDefCountL( CStifItemParser& aItem );
       
   217         virtual TInt RelationDefL( CStifItemParser& aItem );
       
   218         virtual TInt GetRelationDefL( CStifItemParser& aItem );
       
   219         virtual TInt EventDefCountL( CStifItemParser& aItem );
       
   220         virtual TInt EventDefL( CStifItemParser& aItem );
       
   221         virtual TInt GetEventDefL( CStifItemParser& aItem );
       
   222 
       
   223         virtual TInt ExportMetadataL( CStifItemParser& aItem );
       
   224         virtual TInt ImportMetadataL( CStifItemParser& aItem );
       
   225         virtual TInt ImportSchemaL( CStifItemParser& aItem );
       
   226         virtual TInt NamespaceDefCountL( CStifItemParser& aItem );
       
   227         virtual TInt NamespaceDefL( CStifItemParser& aItem );
       
   228         virtual TInt GetNamespaceDefL( CStifItemParser& aItem );
       
   229         virtual TInt ResetNamespaceDefArray( CStifItemParser& aItem );
       
   230         virtual TInt GetDefaultNamespaceDefL( CStifItemParser& aItem );
       
   231         virtual TInt LoadSchemaL( CStifItemParser& aItem );
       
   232         virtual TInt EngineSessionL( CStifItemParser& aItem );
       
   233         virtual TInt GetSchemaVersionL( CStifItemParser& aItem );
       
   234         virtual TInt SetObjectToPresentByGuidL( CStifItemParser& aItem );
       
   235         
       
   236         // Item / InstanceItem test primitives.
       
   237         virtual TInt BelongsToSessionL( CStifItemParser& aItem );
       
   238         virtual TInt SessionL( CStifItemParser& aItem );
       
   239         virtual TInt InDatabaseL( CStifItemParser& aItem );
       
   240         virtual TInt AddItemsL( CStifItemParser& aItem );
       
   241         virtual TInt UpdateItemsL( CStifItemParser& aItem );
       
   242 
       
   243         // Definition test primitives.
       
   244         virtual TInt AddRelationDefL( CStifItemParser& aItem );
       
   245         virtual TInt AddEventDefL( CStifItemParser& aItem );
       
   246         virtual TInt PropertyDefCountL( CStifItemParser& aItem );
       
   247         virtual TInt PropertyDefL( CStifItemParser& aItem );
       
   248         virtual TInt GetPropertyDefL( CStifItemParser& aItem );
       
   249         virtual TInt MandatoryL( CStifItemParser& aItem );
       
   250         virtual TInt MinInt32ValueL( CStifItemParser& aItem );
       
   251         virtual TInt MaxInt32ValueL( CStifItemParser& aItem );
       
   252         virtual TInt MinUint32ValueL( CStifItemParser& aItem );
       
   253         virtual TInt MaxUint32ValueL( CStifItemParser& aItem );
       
   254         virtual TInt MinInt64ValueL( CStifItemParser& aItem );
       
   255         virtual TInt MaxInt64ValueL( CStifItemParser& aItem );
       
   256         virtual TInt MinRealValueL( CStifItemParser& aItem );
       
   257         virtual TInt MaxRealValueL( CStifItemParser& aItem );
       
   258         virtual TInt MinTimeValueL( CStifItemParser& aItem );
       
   259         virtual TInt MaxTimeValueL( CStifItemParser& aItem );
       
   260         virtual TInt MinTextLengthL( CStifItemParser& aItem );
       
   261         virtual TInt MaxTextLengthL( CStifItemParser& aItem );
       
   262         virtual TInt CompareL( CStifItemParser& aItem );
       
   263         virtual TInt ParentL( CStifItemParser& aItem );
       
   264         virtual TInt NameL( CStifItemParser& aItem );
       
   265         virtual TInt ReadOnlyL( CStifItemParser& aItem );
       
   266         virtual TInt DefL( CStifItemParser& aItem );
       
   267 
       
   268         // Object test primitives.
       
   269         virtual TInt SetDefL( CStifItemParser& aItem );
       
   270         virtual TInt UriL( CStifItemParser& aItem );
       
   271         virtual TInt SetUriL( CStifItemParser& aItem );
       
   272         virtual TInt ConfidentialL( CStifItemParser& aItem );
       
   273         virtual TInt SetConfidentialL( CStifItemParser& aItem );
       
   274         virtual TInt PlaceholderL( CStifItemParser& aItem );
       
   275         virtual TInt SetPlaceholderL( CStifItemParser& aItem );
       
   276         virtual TInt MediaIdL( CStifItemParser& aItem );
       
   277         virtual TInt SetMediaIdL( CStifItemParser& aItem );
       
   278         virtual TInt UsageCountL( CStifItemParser& aItem );
       
   279         virtual TInt GuidL( CStifItemParser& aItem );
       
   280         virtual TInt SetGuidL( CStifItemParser& aItem );
       
   281         virtual TInt OpenForModificationsL( CStifItemParser& aItem );
       
   282         virtual TInt NewObjectL( CStifItemParser& aItem );
       
   283         virtual TInt AddObjectL( CStifItemParser& aItem );
       
   284         virtual TInt AddObjectsL( CStifItemParser& aItem );
       
   285         virtual TInt GetObjectL( CStifItemParser& aItem );
       
   286         virtual TInt GetFullObjectL( CStifItemParser& aItem );
       
   287         virtual TInt CheckObjectL( CStifItemParser& aItem );
       
   288         virtual TInt RemoveObjectL( CStifItemParser& aItem );
       
   289         virtual TInt RemoveObjectsL( CStifItemParser& aItem );
       
   290         virtual TInt RemoveAllObjectsL( CStifItemParser& aItem );
       
   291         virtual TInt OpenObjectL( CStifItemParser& aItem );
       
   292         virtual TInt OpenFullObjectL( CStifItemParser& aItem );
       
   293         virtual TInt CommitObjectL( CStifItemParser& aItem );
       
   294         virtual TInt CommitObjectsL( CStifItemParser& aItem );
       
   295         virtual TInt CancelObjectL( CStifItemParser& aItem );
       
   296 
       
   297         virtual TInt PropertyL( CStifItemParser& aItem );
       
   298         virtual TInt PropertyCountL( CStifItemParser& aItem );
       
   299         virtual TInt AddBoolPropertyL( CStifItemParser& aItem );
       
   300         virtual TInt AddInt8PropertyL( CStifItemParser& aItem );
       
   301         virtual TInt AddUint8PropertyL( CStifItemParser& aItem );
       
   302         virtual TInt AddInt16PropertyL( CStifItemParser& aItem );
       
   303         virtual TInt AddUint16PropertyL( CStifItemParser& aItem );
       
   304         virtual TInt AddInt32PropertyL( CStifItemParser& aItem );
       
   305         virtual TInt AddUint32PropertyL( CStifItemParser& aItem );
       
   306         virtual TInt AddInt64PropertyL( CStifItemParser& aItem );
       
   307         virtual TInt AddReal32PropertyL( CStifItemParser& aItem );
       
   308         virtual TInt AddReal64PropertyL( CStifItemParser& aItem );
       
   309         virtual TInt AddTextPropertyL( CStifItemParser& aItem );
       
   310         virtual TInt AddTimePropertyL( CStifItemParser& aItem );
       
   311 
       
   312         // Property test primitives.
       
   313         virtual TInt ObjectL( CStifItemParser& aItem );
       
   314         virtual TInt BoolValueL( CStifItemParser& aItem );
       
   315         virtual TInt Int8ValueL( CStifItemParser& aItem );
       
   316         virtual TInt Uint8ValueL( CStifItemParser& aItem );
       
   317         virtual TInt Int16ValueL( CStifItemParser& aItem );
       
   318         virtual TInt Uint16ValueL( CStifItemParser& aItem );
       
   319         virtual TInt Int32ValueL( CStifItemParser& aItem );
       
   320         virtual TInt Uint32ValueL( CStifItemParser& aItem );
       
   321         virtual TInt Int64ValueL( CStifItemParser& aItem );
       
   322         virtual TInt Real32ValueL( CStifItemParser& aItem );
       
   323         virtual TInt Real64ValueL( CStifItemParser& aItem );
       
   324         virtual TInt TimeValueL( CStifItemParser& aItem );
       
   325         virtual TInt TextValueL( CStifItemParser& aItem );
       
   326         virtual TInt SetBoolValueL( CStifItemParser& aItem );
       
   327         virtual TInt SetInt8ValueL( CStifItemParser& aItem );
       
   328         virtual TInt SetUint8ValueL( CStifItemParser& aItem );
       
   329         virtual TInt SetInt16ValueL( CStifItemParser& aItem );
       
   330         virtual TInt SetUint16ValueL( CStifItemParser& aItem );
       
   331         virtual TInt SetInt32ValueL( CStifItemParser& aItem );
       
   332         virtual TInt SetUint32ValueL( CStifItemParser& aItem );
       
   333         virtual TInt SetInt64ValueL( CStifItemParser& aItem );
       
   334         virtual TInt SetReal32ValueL( CStifItemParser& aItem );
       
   335         virtual TInt SetReal64ValueL( CStifItemParser& aItem );
       
   336         virtual TInt SetTimeValueL( CStifItemParser& aItem );
       
   337         virtual TInt SetTextValueL( CStifItemParser& aItem );
       
   338         virtual TInt RemovePropertyL( CStifItemParser& aItem );
       
   339         virtual TInt MovePropertiesL( CStifItemParser& aItem );
       
   340 
       
   341         // Free text test primitives.
       
   342         virtual TInt FreeTextCountL( CStifItemParser& aItem );
       
   343         virtual TInt FreeTextL( CStifItemParser& aItem );
       
   344         virtual TInt FreeTextIndexL( CStifItemParser& aItem );
       
   345         virtual TInt AddFreeTextL( CStifItemParser& aItem );
       
   346         virtual TInt RemoveFreeTextL( CStifItemParser& aItem );
       
   347 
       
   348         // Relation test primitives.
       
   349         virtual TInt NewRelationL( CStifItemParser& aItem );
       
   350         virtual TInt AddRelationL( CStifItemParser& aItem );
       
   351         virtual TInt LeftObjectIdL( CStifItemParser& aItem );
       
   352         virtual TInt RightObjectIdL( CStifItemParser& aItem );
       
   353         virtual TInt ParameterL( CStifItemParser& aItem );
       
   354         virtual TInt SetParameterL( CStifItemParser& aItem );
       
   355         virtual TInt SetLeftObjectIdL( CStifItemParser& aItem );
       
   356         virtual TInt SetRightObjectIdL( CStifItemParser& aItem );
       
   357         virtual TInt LastModifiedDateL( CStifItemParser& aItem );
       
   358         virtual TInt SetLastModifiedDateL( CStifItemParser& aItem );
       
   359         virtual TInt GetRelationL( CStifItemParser& aItem );
       
   360         virtual TInt UpdateRelationL( CStifItemParser& aItem );
       
   361         virtual TInt RemoveRelationL( CStifItemParser& aItem );
       
   362         virtual TInt RemoveRelationsL( CStifItemParser& aItem );
       
   363 
       
   364         // Event test primitives.
       
   365         virtual TInt NewEventL( CStifItemParser& aItem );
       
   366         virtual TInt AddEventL( CStifItemParser& aItem );
       
   367         virtual TInt ObjectIdL( CStifItemParser& aItem );
       
   368         virtual TInt TimeL( CStifItemParser& aItem );
       
   369         virtual TInt SourceL( CStifItemParser& aItem );
       
   370         virtual TInt ParticipantL( CStifItemParser& aItem );
       
   371         virtual TInt GetEventL( CStifItemParser& aItem );
       
   372         virtual TInt RemoveEventL( CStifItemParser& aItem );
       
   373         virtual TInt RemoveEventsL( CStifItemParser& aItem );
       
   374         //[TestMethods] - Do not remove
       
   375 
       
   376         // Metadata framework observer callback methods
       
   377         void HandleObjectNotification( CMdESession& aSession, 
       
   378             TObserverNotificationType aType,
       
   379             const RArray<TItemId>& aObjectIdArray );
       
   380         void HandleObjectPresentNotification(CMdESession& aSession, 
       
   381             TBool aPresent, const RArray<TItemId>& aObjectIdArray);
       
   382         void HandleRelationNotification( CMdESession& aSession, 
       
   383             TObserverNotificationType aType,
       
   384             const RArray<TItemId>& aRelationIdArray );
       
   385         void HandleRelationItemNotification(CMdESession& aSession, 
       
   386             TObserverNotificationType aType,
       
   387             const RArray<TMdERelation>& aRelationArray);
       
   388         void HandleRelationPresentNotification(CMdESession& aSession,
       
   389             TBool aPresent, const RArray<TItemId>& aRelationIdArray);
       
   390         void HandleEventNotification( CMdESession& aSession,
       
   391             TObserverNotificationType aType,
       
   392             const RArray<TItemId>& aEventIdArray );
       
   393     	void HandleSessionOpened( CMdESession& aSession, TInt aError );
       
   394     	void HandleSessionError( CMdESession& aSession, TInt aError );
       
   395         void HandleSchemaModified();
       
   396 		TInt QueryObjectL( CStifItemParser& aItem );
       
   397 		TInt QueryRelationL( CStifItemParser& aItem );
       
   398 		TInt QueryEventL( CStifItemParser& aItem );
       
   399 
       
   400 		TInt TestPopulateDbL( CStifItemParser& aItem );
       
   401 		
       
   402 private:
       
   403 		CMdEObjectDef& GetObjectDefStrL( CStifItemParser& aItem );
       
   404 		CMdERelationDef& GetRelationDefStrL( CStifItemParser& aItem );
       
   405 		static TQueryResultMode CMdETestScripter::ResultModeL(TDesC& aModeString);
       
   406 		static TObjectConditionCompareMethod CompareMethodL( TDesC& aMethodString );
       
   407 		static TMdERangeType RangeTypeL( TDesC& aTypeString );
       
   408 
       
   409 		TInt GetObjectDefIndexL( CStifItemParser& aItem );	
       
   410 		TInt GetRelationDefIndexL( CStifItemParser& aItem );
       
   411 		TInt GetEventDefIndexL( CStifItemParser& aItem );
       
   412 		TInt GetPropertyDefIndexL( CStifItemParser& aItem );
       
   413 
       
   414 		TInt GetObjectIndexL( CStifItemParser& aItem );
       
   415 		TInt GetEventIndexL( CStifItemParser& aItem );
       
   416 		TInt GetRelationIndexL( CStifItemParser& aItem );
       
   417 		TInt GetPropertyIndexL( CStifItemParser& aItem );
       
   418 
       
   419 		TInt GetLogicConditionIndexL( CStifItemParser& aItem );
       
   420 		TInt GetRelationConditionIndexL( CStifItemParser& aItem );
       
   421 
       
   422 		void AppendNameL(CDesCArrayFlat* aNameArray, const TDesC& aName)
       
   423 			{
       
   424 			TInt pos;
       
   425 			TBuf<32> name(aName);
       
   426 			pos = name.Find(_L("ARRAY_INDEX"));
       
   427 			if ( pos != KErrNotFound )
       
   428 				{
       
   429 				name.SetLength( pos );
       
   430 				name.AppendNum( aNameArray->Count() );
       
   431 				}
       
   432 			if ( aNameArray->Find( name, pos ) )
       
   433 				{
       
   434 				aNameArray->AppendL( name );
       
   435 				}
       
   436 			else
       
   437 				{ // 
       
   438 				iLog->Log( _L( "indentifier = %S already used" ), &name );
       
   439 				User::Leave( KErrAlreadyExists );			
       
   440 				}						
       
   441 			}
       
   442 		
       
   443 
       
   444 public:
       
   445 
       
   446 		TInt NewObjectQueryL( CStifItemParser& aItem );
       
   447 		TInt NewRelationQueryL( CStifItemParser& aItem );
       
   448 		TInt NewEventQueryL( CStifItemParser& aItem );
       
   449 		TInt AddPropertyFilterL( CStifItemParser& aItem );
       
   450 		TInt AppendOrderRuleL( CStifItemParser& aItem );
       
   451 		TInt NewLogicConditionL( CStifItemParser& aItem );
       
   452 		TInt AddLogicConditionL( CStifItemParser& aItem );		
       
   453 		TInt AddObjectConditionL( CStifItemParser& aItem );
       
   454 		TInt AddPropertyConditionL( CStifItemParser& aItem );
       
   455 		TInt AddRelationConditionL( CStifItemParser& aItem );
       
   456 		TInt AddEventConditionL( CStifItemParser& aItem );
       
   457 		
       
   458 		TInt ObjectConditionsL( CStifItemParser& aItem );
       
   459 		
       
   460 		TInt RightL( CStifItemParser& aItem );
       
   461 		TInt LeftL( CStifItemParser& aItem );
       
   462 		TInt SetOperatorL( CStifItemParser& aItem );
       
   463 		TInt SetNegateL( CStifItemParser& aItem );
       
   464 		
       
   465 		TInt FindL( CStifItemParser& aItem );		
       
   466 			
       
   467 		void HandleQueryCompleted( CMdEQuery& aQuery, TInt aError );
       
   468     	
       
   469     	void HandleQueryNewResults(CMdEQuery& aQuery,
       
   470                                        TInt aFirstNewItemIndex,
       
   471                                        TInt aNewItemCount);
       
   472         TInt SetObjectQueryResultL( CStifItemParser& aItem );
       
   473         TInt SetEventQueryResultL( CStifItemParser& aItem );
       
   474         TInt SetRelationQueryResultL( CStifItemParser& aItem );
       
   475         
       
   476     private:
       
   477         // Data
       
   478         TInt iError;
       
   479 
       
   480         RPointerArray<CMdEObjectDef> iObjectDefArray;
       
   481         RPointerArray<CMdERelationDef> iRelationDefArray;
       
   482         RPointerArray<CMdEEventDef> iEventDefArray;
       
   483         RPointerArray<CMdEPropertyDef> iPropertyDefArray;
       
   484         RPointerArray<CMdENamespaceDef> iNamespaceDefArray;
       
   485         
       
   486 		RPointerArray<CMdEObject> iObjectArray;
       
   487         RPointerArray<CMdERelation> iRelationArray;
       
   488         RPointerArray<CMdEEvent> iEventArray;
       
   489         RPointerArray<CMdEProperty> iPropertyArray;
       
   490 		RPointerArray<CMdELogicCondition> iLogicConditionArray;
       
   491 		RPointerArray<CMdERelationCondition> iRelationConditionArray;
       
   492 		RPointerArray<CMdEObjectCondition> iObjectConditionArray;
       
   493 		RPointerArray<CMdEPropertyCondition> iPropertyConditionArray;
       
   494 		RPointerArray<CMdEEventCondition> iEventConditionArray;
       
   495 
       
   496         // Result data from callbacks.
       
   497         TObserverNotificationType iNotificationType;
       
   498         CMdESession* iNotificationSession;
       
   499         RArray<TMdERelation> iNotificationRelationArray;
       
   500         RArray<TItemId> iNotificationItemIdArray;
       
   501 
       
   502         CDesCArrayFlat *iObjectDefNameArray;
       
   503         CDesCArrayFlat *iRelationDefNameArray;
       
   504 		CDesCArrayFlat *iEventDefNameArray;
       
   505 		CDesCArrayFlat *iPropertyDefNameArray;
       
   506 		CDesCArrayFlat *iNamespaceDefNameArray;
       
   507 		
       
   508 		CDesCArrayFlat *iObjectNameArray;		
       
   509         CDesCArrayFlat *iRelationNameArray;
       
   510         CDesCArrayFlat *iEventNameArray;
       
   511         
       
   512         CDesCArrayFlat *iPropertyNameArray;
       
   513         
       
   514 		CDesCArrayFlat *iRelationConditionNameArray;
       
   515 		CDesCArrayFlat *iObjectConditionNameArray;
       
   516 		CDesCArrayFlat *iEventConditionNameArray;
       
   517 		
       
   518 		CDesCArrayFlat *iLogicConditionNameArray;		
       
   519 		CDesCArrayFlat *iPropertyConditionNameArray;
       
   520 
       
   521 		RArray<TInt> iResultIndices;
       
   522 
       
   523         CMdESession* iMdeSession;
       
   524 		CMdENamespaceDef* iDefaultNamespaceDef;
       
   525 		CMdEQuery *iQuery;
       
   526 		CMdELogicCondition *iQueryRoot;
       
   527         TFileName iFilePath;
       
   528         
       
   529         CMdETestScripterAO* iAsyncHandler;
       
   530         RMdEDataBuffer iMdEDataBuf; // Buffer for mde async request results
       
   531         RPointerArray<CMdEInstanceItem> iItemArray;
       
   532         TInt iItemCount;
       
   533     };
       
   534 
       
   535 #endif      // MDETESTSCRIPTER_H
       
   536 
       
   537 // End of File