mds_plat/metadata_engine_api/tsrc/inc/MdETestScripter.h
changeset 58 fe894bb075c2
parent 51 87e65c44ff3a
child 60 79f826a55db2
equal deleted inserted replaced
51:87e65c44ff3a 58:fe894bb075c2
     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 MMdEObjectObserverWithUri,
       
   119                                       public MMdEObjectPresentObserver,
       
   120                                       public MMdERelationObserver,
       
   121                                       public MMdERelationItemObserver,
       
   122                                       public MMdERelationPresentObserver,
       
   123                                       public MMdESessionObserver,
       
   124                                       public MMdEEventObserver,
       
   125                                       public MMdEQueryObserver
       
   126     {
       
   127     friend class CMdETestScripterAO;
       
   128     public:  // Constructors and destructor
       
   129 
       
   130         /**
       
   131         * Two-phased constructor.
       
   132         */
       
   133         static CMdETestScripter* NewL( CTestModuleIf& aTestModuleIf );
       
   134 
       
   135         /**
       
   136         * Destructor.
       
   137         */
       
   138         virtual ~CMdETestScripter();
       
   139 
       
   140     public: // New functions
       
   141 
       
   142     public: // Functions from base classes
       
   143         virtual TInt RunMethodL( CStifItemParser& aItem );
       
   144 
       
   145     protected:  // New functions
       
   146 
       
   147 
       
   148     protected:  // Functions from base classes
       
   149 
       
   150 
       
   151     private:
       
   152 
       
   153         /**
       
   154         * C++ default constructor.
       
   155         */
       
   156         CMdETestScripter( CTestModuleIf& aTestModuleIf );
       
   157 
       
   158         /**
       
   159         * By default Symbian 2nd phase constructor is private.
       
   160         */
       
   161         void ConstructL();
       
   162 
       
   163         /**
       
   164         * Frees all resources allocated from test methods.
       
   165         * @since ?Series60_version
       
   166         */
       
   167         void Delete();
       
   168         
       
   169         template <class T> T* SanitizeArrayIndexL(
       
   170     		RPointerArray<T>& aArray, const CDesCArrayFlat& aNameArray, 
       
   171     		CStifItemParser& aItem );
       
   172         CMdEInstanceItem* GetInstanceItemByArrayIndexL(
       
   173             TInt aMode, CStifItemParser& aItem );
       
   174         void CheckTMdEObjectL( const TMdEObject& aTObject, const CMdEObject& aObject );
       
   175         void CheckTMdERelationL( const TMdERelation& aTRelation, const CMdERelation& aRelation );
       
   176         template <class T1, class T2> void CheckTInstanceL( const T1& aT1, const T2& aT2 );
       
   177         void CheckTMdEObjectArrayL(
       
   178             const RArray<TMdEObject>& aTObjects, TInt objIndex, TInt aCount );
       
   179         void CheckTMdERelationArrayL(
       
   180             const RArray<TMdERelation>& aTRelations, const TInt aObjIndex, const TInt aCount );
       
   181         template <class T> void CheckTItemIdArrayL(
       
   182             const RArray<TItemId>& aTItemIds, const RPointerArray<T>& aArray,
       
   183             const TInt aIndex, const TInt aCount );
       
   184         TInt CheckAsyncResultArrayL( TEventIf aEvent );
       
   185         void FormInstanceItemArrayL(
       
   186             CStifItemParser& aItem, RPointerArray<CMdEInstanceItem>& aItemArray ) const;
       
   187 
       
   188         /**
       
   189         * Test methods are listed below. 
       
   190         */
       
   191 
       
   192         // Observer add/remove test primitives
       
   193         virtual TInt AddSchemaObserverL( CStifItemParser& aItem );
       
   194         virtual TInt RemoveSchemaObserverL( CStifItemParser& aItem );
       
   195         virtual TInt AddObjectObserverL( CStifItemParser& aItem );
       
   196         virtual TInt RemoveObjectObserverL( CStifItemParser& aItem );
       
   197         virtual TInt AddObjectObserverWithUriL( CStifItemParser& aItem );
       
   198         virtual TInt RemoveObjectObserverWithUriL( CStifItemParser& aItem );
       
   199         virtual TInt AddObjectPresentObserverL( CStifItemParser& aItem );
       
   200         virtual TInt RemoveObjectPresentObserverL( CStifItemParser& aItem );
       
   201         virtual TInt AddRelationObserverL( CStifItemParser& aItem );
       
   202         virtual TInt RemoveRelationObserverL( CStifItemParser& aItem );
       
   203         virtual TInt AddRelationItemObserverL( CStifItemParser& aItem );
       
   204         virtual TInt RemoveRelationItemObserverL( CStifItemParser& aItem );
       
   205         virtual TInt AddRelationPresentObserverL( CStifItemParser& aItem );
       
   206         virtual TInt RemoveRelationPresentObserverL( CStifItemParser& aItem );
       
   207         virtual TInt AddEventObserverL( CStifItemParser& aItem );
       
   208         virtual TInt RemoveEventObserverL( CStifItemParser& aItem );
       
   209 
       
   210         // Notification resulated test primitives
       
   211         virtual TInt VerifyTItemIdsL( CStifItemParser& aItem );
       
   212         virtual TInt VerifyMdERelationsL( CStifItemParser& aItem );
       
   213         virtual TInt VerifyObserverNotificationTypeL( CStifItemParser& aItem );
       
   214 
       
   215         // Metadata/schema/namespace test primitives.
       
   216         virtual TInt ObjectDefCountL( CStifItemParser& aItem );
       
   217         virtual TInt ObjectDefL( CStifItemParser& aItem );
       
   218         virtual TInt GetObjectDefL( CStifItemParser& aItem );
       
   219         virtual TInt RelationDefCountL( CStifItemParser& aItem );
       
   220         virtual TInt RelationDefL( CStifItemParser& aItem );
       
   221         virtual TInt GetRelationDefL( CStifItemParser& aItem );
       
   222         virtual TInt EventDefCountL( CStifItemParser& aItem );
       
   223         virtual TInt EventDefL( CStifItemParser& aItem );
       
   224         virtual TInt GetEventDefL( CStifItemParser& aItem );
       
   225 
       
   226         virtual TInt ExportMetadataL( CStifItemParser& aItem );
       
   227         virtual TInt ImportMetadataL( CStifItemParser& aItem );
       
   228         virtual TInt ImportSchemaL( CStifItemParser& aItem );
       
   229         virtual TInt NamespaceDefCountL( CStifItemParser& aItem );
       
   230         virtual TInt NamespaceDefL( CStifItemParser& aItem );
       
   231         virtual TInt GetNamespaceDefL( CStifItemParser& aItem );
       
   232         virtual TInt ResetNamespaceDefArray( CStifItemParser& aItem );
       
   233         virtual TInt GetDefaultNamespaceDefL( CStifItemParser& aItem );
       
   234         virtual TInt LoadSchemaL( CStifItemParser& aItem );
       
   235         virtual TInt EngineSessionL( CStifItemParser& aItem );
       
   236         virtual TInt GetSchemaVersionL( CStifItemParser& aItem );
       
   237         virtual TInt SetObjectToPresentByGuidL( CStifItemParser& aItem );
       
   238         
       
   239         // Item / InstanceItem test primitives.
       
   240         virtual TInt BelongsToSessionL( CStifItemParser& aItem );
       
   241         virtual TInt SessionL( CStifItemParser& aItem );
       
   242         virtual TInt InDatabaseL( CStifItemParser& aItem );
       
   243         virtual TInt AddItemsL( CStifItemParser& aItem );
       
   244         virtual TInt UpdateItemsL( CStifItemParser& aItem );
       
   245 
       
   246         // Definition test primitives.
       
   247         virtual TInt AddRelationDefL( CStifItemParser& aItem );
       
   248         virtual TInt AddEventDefL( CStifItemParser& aItem );
       
   249         virtual TInt PropertyDefCountL( CStifItemParser& aItem );
       
   250         virtual TInt PropertyDefL( CStifItemParser& aItem );
       
   251         virtual TInt GetPropertyDefL( CStifItemParser& aItem );
       
   252         virtual TInt MandatoryL( CStifItemParser& aItem );
       
   253         virtual TInt MinInt32ValueL( CStifItemParser& aItem );
       
   254         virtual TInt MaxInt32ValueL( CStifItemParser& aItem );
       
   255         virtual TInt MinUint32ValueL( CStifItemParser& aItem );
       
   256         virtual TInt MaxUint32ValueL( CStifItemParser& aItem );
       
   257         virtual TInt MinInt64ValueL( CStifItemParser& aItem );
       
   258         virtual TInt MaxInt64ValueL( CStifItemParser& aItem );
       
   259         virtual TInt MinRealValueL( CStifItemParser& aItem );
       
   260         virtual TInt MaxRealValueL( CStifItemParser& aItem );
       
   261         virtual TInt MinTimeValueL( CStifItemParser& aItem );
       
   262         virtual TInt MaxTimeValueL( CStifItemParser& aItem );
       
   263         virtual TInt MinTextLengthL( CStifItemParser& aItem );
       
   264         virtual TInt MaxTextLengthL( CStifItemParser& aItem );
       
   265         virtual TInt CompareL( CStifItemParser& aItem );
       
   266         virtual TInt ParentL( CStifItemParser& aItem );
       
   267         virtual TInt NameL( CStifItemParser& aItem );
       
   268         virtual TInt ReadOnlyL( CStifItemParser& aItem );
       
   269         virtual TInt DefL( CStifItemParser& aItem );
       
   270 
       
   271         // Object test primitives.
       
   272         virtual TInt SetDefL( CStifItemParser& aItem );
       
   273         virtual TInt UriL( CStifItemParser& aItem );
       
   274         virtual TInt SetUriL( CStifItemParser& aItem );
       
   275         virtual TInt ConfidentialL( CStifItemParser& aItem );
       
   276         virtual TInt SetConfidentialL( CStifItemParser& aItem );
       
   277         virtual TInt PlaceholderL( CStifItemParser& aItem );
       
   278         virtual TInt SetPlaceholderL( CStifItemParser& aItem );
       
   279         virtual TInt MediaIdL( CStifItemParser& aItem );
       
   280         virtual TInt SetMediaIdL( CStifItemParser& aItem );
       
   281         virtual TInt UsageCountL( CStifItemParser& aItem );
       
   282         virtual TInt GuidL( CStifItemParser& aItem );
       
   283         virtual TInt SetGuidL( CStifItemParser& aItem );
       
   284         virtual TInt OpenForModificationsL( CStifItemParser& aItem );
       
   285         virtual TInt NewObjectL( CStifItemParser& aItem );
       
   286         virtual TInt AddObjectL( CStifItemParser& aItem );
       
   287         virtual TInt AddObjectsL( CStifItemParser& aItem );
       
   288         virtual TInt GetObjectL( CStifItemParser& aItem );
       
   289         virtual TInt GetFullObjectL( CStifItemParser& aItem );
       
   290         virtual TInt CheckObjectL( CStifItemParser& aItem );
       
   291         virtual TInt RemoveObjectL( CStifItemParser& aItem );
       
   292         virtual TInt RemoveObjectsL( CStifItemParser& aItem );
       
   293         virtual TInt RemoveAllObjectsL( CStifItemParser& aItem );
       
   294         virtual TInt OpenObjectL( CStifItemParser& aItem );
       
   295         virtual TInt OpenFullObjectL( CStifItemParser& aItem );
       
   296         virtual TInt CommitObjectL( CStifItemParser& aItem );
       
   297         virtual TInt CommitObjectsL( CStifItemParser& aItem );
       
   298         virtual TInt CancelObjectL( CStifItemParser& aItem );
       
   299 
       
   300         virtual TInt PropertyL( CStifItemParser& aItem );
       
   301         virtual TInt PropertyCountL( CStifItemParser& aItem );
       
   302         virtual TInt AddBoolPropertyL( CStifItemParser& aItem );
       
   303         virtual TInt AddInt8PropertyL( CStifItemParser& aItem );
       
   304         virtual TInt AddUint8PropertyL( CStifItemParser& aItem );
       
   305         virtual TInt AddInt16PropertyL( CStifItemParser& aItem );
       
   306         virtual TInt AddUint16PropertyL( CStifItemParser& aItem );
       
   307         virtual TInt AddInt32PropertyL( CStifItemParser& aItem );
       
   308         virtual TInt AddUint32PropertyL( CStifItemParser& aItem );
       
   309         virtual TInt AddInt64PropertyL( CStifItemParser& aItem );
       
   310         virtual TInt AddReal32PropertyL( CStifItemParser& aItem );
       
   311         virtual TInt AddReal64PropertyL( CStifItemParser& aItem );
       
   312         virtual TInt AddTextPropertyL( CStifItemParser& aItem );
       
   313         virtual TInt AddTimePropertyL( CStifItemParser& aItem );
       
   314 
       
   315         // Property test primitives.
       
   316         virtual TInt ObjectL( CStifItemParser& aItem );
       
   317         virtual TInt BoolValueL( CStifItemParser& aItem );
       
   318         virtual TInt Int8ValueL( CStifItemParser& aItem );
       
   319         virtual TInt Uint8ValueL( CStifItemParser& aItem );
       
   320         virtual TInt Int16ValueL( CStifItemParser& aItem );
       
   321         virtual TInt Uint16ValueL( CStifItemParser& aItem );
       
   322         virtual TInt Int32ValueL( CStifItemParser& aItem );
       
   323         virtual TInt Uint32ValueL( CStifItemParser& aItem );
       
   324         virtual TInt Int64ValueL( CStifItemParser& aItem );
       
   325         virtual TInt Real32ValueL( CStifItemParser& aItem );
       
   326         virtual TInt Real64ValueL( CStifItemParser& aItem );
       
   327         virtual TInt TimeValueL( CStifItemParser& aItem );
       
   328         virtual TInt TextValueL( CStifItemParser& aItem );
       
   329         virtual TInt SetBoolValueL( CStifItemParser& aItem );
       
   330         virtual TInt SetInt8ValueL( CStifItemParser& aItem );
       
   331         virtual TInt SetUint8ValueL( CStifItemParser& aItem );
       
   332         virtual TInt SetInt16ValueL( CStifItemParser& aItem );
       
   333         virtual TInt SetUint16ValueL( CStifItemParser& aItem );
       
   334         virtual TInt SetInt32ValueL( CStifItemParser& aItem );
       
   335         virtual TInt SetUint32ValueL( CStifItemParser& aItem );
       
   336         virtual TInt SetInt64ValueL( CStifItemParser& aItem );
       
   337         virtual TInt SetReal32ValueL( CStifItemParser& aItem );
       
   338         virtual TInt SetReal64ValueL( CStifItemParser& aItem );
       
   339         virtual TInt SetTimeValueL( CStifItemParser& aItem );
       
   340         virtual TInt SetTextValueL( CStifItemParser& aItem );
       
   341         virtual TInt RemovePropertyL( CStifItemParser& aItem );
       
   342         virtual TInt MovePropertiesL( CStifItemParser& aItem );
       
   343 
       
   344         // Free text test primitives.
       
   345         virtual TInt FreeTextCountL( CStifItemParser& aItem );
       
   346         virtual TInt FreeTextL( CStifItemParser& aItem );
       
   347         virtual TInt FreeTextIndexL( CStifItemParser& aItem );
       
   348         virtual TInt AddFreeTextL( CStifItemParser& aItem );
       
   349         virtual TInt RemoveFreeTextL( CStifItemParser& aItem );
       
   350 
       
   351         // Relation test primitives.
       
   352         virtual TInt NewRelationL( CStifItemParser& aItem );
       
   353         virtual TInt AddRelationL( CStifItemParser& aItem );
       
   354         virtual TInt LeftObjectIdL( CStifItemParser& aItem );
       
   355         virtual TInt RightObjectIdL( CStifItemParser& aItem );
       
   356         virtual TInt ParameterL( CStifItemParser& aItem );
       
   357         virtual TInt SetParameterL( CStifItemParser& aItem );
       
   358         virtual TInt SetLeftObjectIdL( CStifItemParser& aItem );
       
   359         virtual TInt SetRightObjectIdL( CStifItemParser& aItem );
       
   360         virtual TInt LastModifiedDateL( CStifItemParser& aItem );
       
   361         virtual TInt SetLastModifiedDateL( CStifItemParser& aItem );
       
   362         virtual TInt GetRelationL( CStifItemParser& aItem );
       
   363         virtual TInt UpdateRelationL( CStifItemParser& aItem );
       
   364         virtual TInt RemoveRelationL( CStifItemParser& aItem );
       
   365         virtual TInt RemoveRelationsL( CStifItemParser& aItem );
       
   366 
       
   367         // Event test primitives.
       
   368         virtual TInt NewEventL( CStifItemParser& aItem );
       
   369         virtual TInt AddEventL( CStifItemParser& aItem );
       
   370         virtual TInt ObjectIdL( CStifItemParser& aItem );
       
   371         virtual TInt TimeL( CStifItemParser& aItem );
       
   372         virtual TInt SourceL( CStifItemParser& aItem );
       
   373         virtual TInt ParticipantL( CStifItemParser& aItem );
       
   374         virtual TInt GetEventL( CStifItemParser& aItem );
       
   375         virtual TInt RemoveEventL( CStifItemParser& aItem );
       
   376         virtual TInt RemoveEventsL( CStifItemParser& aItem );
       
   377         //[TestMethods] - Do not remove
       
   378 
       
   379         // Metadata framework observer callback methods
       
   380         void HandleObjectNotification( CMdESession& aSession, 
       
   381             TObserverNotificationType aType,
       
   382             const RArray<TItemId>& aObjectIdArray );
       
   383         void HandleUriObjectNotification(CMdESession& aSession, 
       
   384             TObserverNotificationType aType,
       
   385             const RArray<TItemId>& aObjectIdArray,
       
   386             const RPointerArray<HBufC>& aObjectUriArray);
       
   387         void HandleObjectPresentNotification(CMdESession& aSession, 
       
   388             TBool aPresent, const RArray<TItemId>& aObjectIdArray);
       
   389         void HandleRelationNotification( CMdESession& aSession, 
       
   390             TObserverNotificationType aType,
       
   391             const RArray<TItemId>& aRelationIdArray );
       
   392         void HandleRelationItemNotification(CMdESession& aSession, 
       
   393             TObserverNotificationType aType,
       
   394             const RArray<TMdERelation>& aRelationArray);
       
   395         void HandleRelationPresentNotification(CMdESession& aSession,
       
   396             TBool aPresent, const RArray<TItemId>& aRelationIdArray);
       
   397         void HandleEventNotification( CMdESession& aSession,
       
   398             TObserverNotificationType aType,
       
   399             const RArray<TItemId>& aEventIdArray );
       
   400     	void HandleSessionOpened( CMdESession& aSession, TInt aError );
       
   401     	void HandleSessionError( CMdESession& aSession, TInt aError );
       
   402         void HandleSchemaModified();
       
   403 		TInt QueryObjectL( CStifItemParser& aItem );
       
   404 		TInt QueryRelationL( CStifItemParser& aItem );
       
   405 		TInt QueryEventL( CStifItemParser& aItem );
       
   406 
       
   407 		TInt TestPopulateDbL( CStifItemParser& aItem );
       
   408 		
       
   409 private:
       
   410 		CMdEObjectDef& GetObjectDefStrL( CStifItemParser& aItem );
       
   411 		CMdERelationDef& GetRelationDefStrL( CStifItemParser& aItem );
       
   412 		static TQueryResultMode CMdETestScripter::ResultModeL(TDesC& aModeString);
       
   413 		static TObjectConditionCompareMethod CompareMethodL( TDesC& aMethodString );
       
   414 		static TMdERangeType RangeTypeL( TDesC& aTypeString );
       
   415 
       
   416 		TInt GetObjectDefIndexL( CStifItemParser& aItem );	
       
   417 		TInt GetRelationDefIndexL( CStifItemParser& aItem );
       
   418 		TInt GetEventDefIndexL( CStifItemParser& aItem );
       
   419 		TInt GetPropertyDefIndexL( CStifItemParser& aItem );
       
   420 
       
   421 		TInt GetObjectIndexL( CStifItemParser& aItem );
       
   422 		TInt GetEventIndexL( CStifItemParser& aItem );
       
   423 		TInt GetRelationIndexL( CStifItemParser& aItem );
       
   424 		TInt GetPropertyIndexL( CStifItemParser& aItem );
       
   425 
       
   426 		TInt GetLogicConditionIndexL( CStifItemParser& aItem );
       
   427 		TInt GetRelationConditionIndexL( CStifItemParser& aItem );
       
   428 
       
   429 		void AppendNameL(CDesCArrayFlat* aNameArray, const TDesC& aName)
       
   430 			{
       
   431 			TInt pos;
       
   432 			TBuf<32> name(aName);
       
   433 			pos = name.Find(_L("ARRAY_INDEX"));
       
   434 			if ( pos != KErrNotFound )
       
   435 				{
       
   436 				name.SetLength( pos );
       
   437 				name.AppendNum( aNameArray->Count() );
       
   438 				}
       
   439 			if ( aNameArray->Find( name, pos ) )
       
   440 				{
       
   441 				aNameArray->AppendL( name );
       
   442 				}
       
   443 			else
       
   444 				{ // 
       
   445 				iLog->Log( _L( "indentifier = %S already used" ), &name );
       
   446 				User::Leave( KErrAlreadyExists );			
       
   447 				}						
       
   448 			}
       
   449 		
       
   450 
       
   451 public:
       
   452 
       
   453 		TInt NewObjectQueryL( CStifItemParser& aItem );
       
   454 		TInt NewRelationQueryL( CStifItemParser& aItem );
       
   455 		TInt NewEventQueryL( CStifItemParser& aItem );
       
   456 		TInt AddPropertyFilterL( CStifItemParser& aItem );
       
   457 		TInt AppendOrderRuleL( CStifItemParser& aItem );
       
   458 		TInt NewLogicConditionL( CStifItemParser& aItem );
       
   459 		TInt AddLogicConditionL( CStifItemParser& aItem );		
       
   460 		TInt AddObjectConditionL( CStifItemParser& aItem );
       
   461 		TInt AddPropertyConditionL( CStifItemParser& aItem );
       
   462 		TInt AddRelationConditionL( CStifItemParser& aItem );
       
   463 		TInt AddEventConditionL( CStifItemParser& aItem );
       
   464 		
       
   465 		TInt ObjectConditionsL( CStifItemParser& aItem );
       
   466 		
       
   467 		TInt RightL( CStifItemParser& aItem );
       
   468 		TInt LeftL( CStifItemParser& aItem );
       
   469 		TInt SetOperatorL( CStifItemParser& aItem );
       
   470 		TInt SetNegateL( CStifItemParser& aItem );
       
   471 		
       
   472 		TInt FindL( CStifItemParser& aItem );		
       
   473 			
       
   474 		void HandleQueryCompleted( CMdEQuery& aQuery, TInt aError );
       
   475     	
       
   476     	void HandleQueryNewResults(CMdEQuery& aQuery,
       
   477                                        TInt aFirstNewItemIndex,
       
   478                                        TInt aNewItemCount);
       
   479         TInt SetObjectQueryResultL( CStifItemParser& aItem );
       
   480         TInt SetEventQueryResultL( CStifItemParser& aItem );
       
   481         TInt SetRelationQueryResultL( CStifItemParser& aItem );
       
   482         
       
   483     private:
       
   484         // Data
       
   485         TInt iError;
       
   486 
       
   487         RPointerArray<CMdEObjectDef> iObjectDefArray;
       
   488         RPointerArray<CMdERelationDef> iRelationDefArray;
       
   489         RPointerArray<CMdEEventDef> iEventDefArray;
       
   490         RPointerArray<CMdEPropertyDef> iPropertyDefArray;
       
   491         RPointerArray<CMdENamespaceDef> iNamespaceDefArray;
       
   492         
       
   493 		RPointerArray<CMdEObject> iObjectArray;
       
   494         RPointerArray<CMdERelation> iRelationArray;
       
   495         RPointerArray<CMdEEvent> iEventArray;
       
   496         RPointerArray<CMdEProperty> iPropertyArray;
       
   497 		RPointerArray<CMdELogicCondition> iLogicConditionArray;
       
   498 		RPointerArray<CMdERelationCondition> iRelationConditionArray;
       
   499 		RPointerArray<CMdEObjectCondition> iObjectConditionArray;
       
   500 		RPointerArray<CMdEPropertyCondition> iPropertyConditionArray;
       
   501 		RPointerArray<CMdEEventCondition> iEventConditionArray;
       
   502 
       
   503         // Result data from callbacks.
       
   504         TObserverNotificationType iNotificationType;
       
   505         CMdESession* iNotificationSession;
       
   506         RArray<TMdERelation> iNotificationRelationArray;
       
   507         RArray<TItemId> iNotificationItemIdArray;
       
   508 
       
   509         CDesCArrayFlat *iObjectDefNameArray;
       
   510         CDesCArrayFlat *iRelationDefNameArray;
       
   511 		CDesCArrayFlat *iEventDefNameArray;
       
   512 		CDesCArrayFlat *iPropertyDefNameArray;
       
   513 		CDesCArrayFlat *iNamespaceDefNameArray;
       
   514 		
       
   515 		CDesCArrayFlat *iObjectNameArray;		
       
   516         CDesCArrayFlat *iRelationNameArray;
       
   517         CDesCArrayFlat *iEventNameArray;
       
   518         
       
   519         CDesCArrayFlat *iPropertyNameArray;
       
   520         
       
   521 		CDesCArrayFlat *iRelationConditionNameArray;
       
   522 		CDesCArrayFlat *iObjectConditionNameArray;
       
   523 		CDesCArrayFlat *iEventConditionNameArray;
       
   524 		
       
   525 		CDesCArrayFlat *iLogicConditionNameArray;		
       
   526 		CDesCArrayFlat *iPropertyConditionNameArray;
       
   527 
       
   528 		RArray<TInt> iResultIndices;
       
   529 
       
   530         CMdESession* iMdeSession;
       
   531 		CMdENamespaceDef* iDefaultNamespaceDef;
       
   532 		CMdEQuery *iQuery;
       
   533 		CMdELogicCondition *iQueryRoot;
       
   534         TFileName iFilePath;
       
   535         
       
   536         CMdETestScripterAO* iAsyncHandler;
       
   537         RMdEDataBuffer iMdEDataBuf; // Buffer for mde async request results
       
   538         RPointerArray<CMdEInstanceItem> iItemArray;
       
   539         TInt iItemCount;
       
   540     };
       
   541 
       
   542 #endif      // MDETESTSCRIPTER_H
       
   543 
       
   544 // End of File