mds_plat/metadata_engine_api/inc/mdeobjectcondition.h
author hgs
Wed, 06 Oct 2010 15:08:08 +0300
changeset 60 79f826a55db2
permissions -rw-r--r--
201039
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
60
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  ?Description
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#ifndef __MDEOBJECTCONDITION_H__
hgs
parents:
diff changeset
    20
#define __MDEOBJECTCONDITION_H__
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
hgs
parents:
diff changeset
    23
#include <mdecondition.h>
hgs
parents:
diff changeset
    24
#include <mderange.h>
hgs
parents:
diff changeset
    25
hgs
parents:
diff changeset
    26
/* Forward declarations. */
hgs
parents:
diff changeset
    27
class CMdEObjectDef;
hgs
parents:
diff changeset
    28
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
/**
hgs
parents:
diff changeset
    31
 * Query condition for objects.
hgs
parents:
diff changeset
    32
 */
hgs
parents:
diff changeset
    33
NONSHARABLE_CLASS(CMdEObjectCondition) : public CMdECondition
hgs
parents:
diff changeset
    34
	{
hgs
parents:
diff changeset
    35
public:
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
	/* Constructors and destructor. */
hgs
parents:
diff changeset
    38
/**
hgs
parents:
diff changeset
    39
 * Two-phased constructor.
hgs
parents:
diff changeset
    40
 */
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
	static CMdEObjectCondition* NewL( TObjectConditionCompareMethod aCompareMethod,
hgs
parents:
diff changeset
    43
			TItemId aObjectId = KNoId, 
hgs
parents:
diff changeset
    44
			const CMdEObjectDef* aObjectDef = NULL,
hgs
parents:
diff changeset
    45
			TInt64 aObjectGuidHigh = 0, TInt64 aObjectGuidLow = 0 );
hgs
parents:
diff changeset
    46
hgs
parents:
diff changeset
    47
	static CMdEObjectCondition* NewLC( TObjectConditionCompareMethod aCompareMethod,
hgs
parents:
diff changeset
    48
			TItemId aObjectId = KNoId,
hgs
parents:
diff changeset
    49
			const CMdEObjectDef* aObjectDef = NULL,
hgs
parents:
diff changeset
    50
			TInt64 aObjectGuidHigh = 0, TInt64 aObjectGuidLow = 0 );
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
	static CMdEObjectCondition* NewL( TObjectConditionCompareMethod aCompareMethod,
hgs
parents:
diff changeset
    53
			const RArray<TItemId>* aObjectIds = NULL,
hgs
parents:
diff changeset
    54
			const TDesC* aString = NULL,
hgs
parents:
diff changeset
    55
			const TMdEUintRange* aRange = NULL );
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
	static CMdEObjectCondition* NewLC( TObjectConditionCompareMethod aCompareMethod,
hgs
parents:
diff changeset
    58
			const RArray<TItemId>* aObjectIds = NULL,
hgs
parents:
diff changeset
    59
			const TDesC* aString = NULL,
hgs
parents:
diff changeset
    60
			const TMdEUintRange* aRange = NULL );
hgs
parents:
diff changeset
    61
hgs
parents:
diff changeset
    62
hgs
parents:
diff changeset
    63
	/**
hgs
parents:
diff changeset
    64
	 * Destructor.
hgs
parents:
diff changeset
    65
	 */
hgs
parents:
diff changeset
    66
	virtual ~CMdEObjectCondition();
hgs
parents:
diff changeset
    67
hgs
parents:
diff changeset
    68
	/* Methods. */
hgs
parents:
diff changeset
    69
hgs
parents:
diff changeset
    70
    /**
hgs
parents:
diff changeset
    71
     * Returns the object definition of the condition.
hgs
parents:
diff changeset
    72
     *
hgs
parents:
diff changeset
    73
     * @return  Object definition. <code>NULL</code>, if not defined.
hgs
parents:
diff changeset
    74
     */
hgs
parents:
diff changeset
    75
	IMPORT_C const CMdEObjectDef* ObjectDef() const;
hgs
parents:
diff changeset
    76
hgs
parents:
diff changeset
    77
    /**
hgs
parents:
diff changeset
    78
     * Returns the object ID number of the condition.
hgs
parents:
diff changeset
    79
     *
hgs
parents:
diff changeset
    80
     * @return  Object ID. Zero, if not defined.
hgs
parents:
diff changeset
    81
     */
hgs
parents:
diff changeset
    82
    IMPORT_C TItemId ObjectId() const;
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    /**
hgs
parents:
diff changeset
    85
     * Returns the object ID numbers of the condition.
hgs
parents:
diff changeset
    86
     *
hgs
parents:
diff changeset
    87
     * @return  Object IDs. <code>NULL</code>, if not defined.
hgs
parents:
diff changeset
    88
     */
hgs
parents:
diff changeset
    89
    IMPORT_C const RArray<TItemId>* ObjectIds() const;
hgs
parents:
diff changeset
    90
hgs
parents:
diff changeset
    91
    /**
hgs
parents:
diff changeset
    92
     * Returns the string of the condition.
hgs
parents:
diff changeset
    93
     *
hgs
parents:
diff changeset
    94
     * @return  String descriptor. <code>NULL</code>, if not defined.
hgs
parents:
diff changeset
    95
     */
hgs
parents:
diff changeset
    96
    IMPORT_C const TDesC* String() const;
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
    /**
hgs
parents:
diff changeset
    99
     * Returns the comparison method of the condition.
hgs
parents:
diff changeset
   100
     *
hgs
parents:
diff changeset
   101
     * @return  Comparison method.
hgs
parents:
diff changeset
   102
     */
hgs
parents:
diff changeset
   103
    IMPORT_C TObjectConditionCompareMethod CompareMethod() const;
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
    /**
hgs
parents:
diff changeset
   106
     * Returns the level of confidentiality of the condition.
hgs
parents:
diff changeset
   107
     *
hgs
parents:
diff changeset
   108
     * @return  Confidentiality level of condition.
hgs
parents:
diff changeset
   109
     */
hgs
parents:
diff changeset
   110
    IMPORT_C TObjectConditionConfidentialityLevel ConfidentialityLevel() const;
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
    /**
hgs
parents:
diff changeset
   113
     * Sets the confidentiality level for the condition.
hgs
parents:
diff changeset
   114
     * Default level is ELevelNormal.
hgs
parents:
diff changeset
   115
     *
hgs
parents:
diff changeset
   116
     * @param  aLevel focuses the search to confidential or
hgs
parents:
diff changeset
   117
     *         non-confidential  objects or both of them.
hgs
parents:
diff changeset
   118
     */
hgs
parents:
diff changeset
   119
    IMPORT_C void SetConfidentialityLevel( TObjectConditionConfidentialityLevel aLevel );
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
    /**
hgs
parents:
diff changeset
   122
     * Determines whether the condition requires the object
hgs
parents:
diff changeset
   123
     * to be a present object or not.
hgs
parents:
diff changeset
   124
     *
hgs
parents:
diff changeset
   125
     * @return  <code>ETrue</code>, if not present objects are requested;
hgs
parents:
diff changeset
   126
     *          <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   127
     */
hgs
parents:
diff changeset
   128
    IMPORT_C TBool NotPresent() const;
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    /** 
hgs
parents:
diff changeset
   131
     * Sets whether the condition requires the object
hgs
parents:
diff changeset
   132
     * to be a present object or not.
hgs
parents:
diff changeset
   133
     *
hgs
parents:
diff changeset
   134
     * @param aNotPresent  <code>ETrue</code>, if the object should 
hgs
parents:
diff changeset
   135
     *                                         be a not present object.
hgs
parents:
diff changeset
   136
     *                     <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   137
     */
hgs
parents:
diff changeset
   138
    IMPORT_C void SetNotPresent(TBool aNotPresent);
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
    /**
hgs
parents:
diff changeset
   141
     * Determines whether the condition requires the object
hgs
parents:
diff changeset
   142
     * to be a not placeholder object.
hgs
parents:
diff changeset
   143
     *
hgs
parents:
diff changeset
   144
     * @return  <code>ETrue</code>, if not placeholder objects are excluded;
hgs
parents:
diff changeset
   145
     *          <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   146
     */
hgs
parents:
diff changeset
   147
    IMPORT_C TBool NotPlaceholder() const;
hgs
parents:
diff changeset
   148
hgs
parents:
diff changeset
   149
    /** 
hgs
parents:
diff changeset
   150
     * Sets whether the condition requires the object
hgs
parents:
diff changeset
   151
     * to be a not placeholder object.
hgs
parents:
diff changeset
   152
     *
hgs
parents:
diff changeset
   153
     * @param aNotPlaceholder  <code>ETrue</code>, if the object should 
hgs
parents:
diff changeset
   154
     *                                             be a not placeholder object.
hgs
parents:
diff changeset
   155
     *                         <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   156
     */
hgs
parents:
diff changeset
   157
    IMPORT_C void SetNotPlaceholder(TBool aNotPlaceholder);
hgs
parents:
diff changeset
   158
hgs
parents:
diff changeset
   159
    /**
hgs
parents:
diff changeset
   160
     * Get possible query's internal optimization flags from condition.
hgs
parents:
diff changeset
   161
     *
hgs
parents:
diff changeset
   162
     * @param aFlaga query's internal optimization flags
hgs
parents:
diff changeset
   163
     * @return last level internal optimization flags
hgs
parents:
diff changeset
   164
     */
hgs
parents:
diff changeset
   165
    TUint32 InternalQueryOptimizationFlags(TUint32& aFlags);
hgs
parents:
diff changeset
   166
hgs
parents:
diff changeset
   167
    /**
hgs
parents:
diff changeset
   168
     * Get required size of serialized buffer when this is serialized.
hgs
parents:
diff changeset
   169
     *
hgs
parents:
diff changeset
   170
     * @return required size of serialized buffer
hgs
parents:
diff changeset
   171
     */
hgs
parents:
diff changeset
   172
    TUint32 RequiredBufferSize() const;
hgs
parents:
diff changeset
   173
hgs
parents:
diff changeset
   174
    /**
hgs
parents:
diff changeset
   175
     * Serialize own data to serialized buffer (correct position must be set 
hgs
parents:
diff changeset
   176
     * before calling) and return new position of serialized buffer.
hgs
parents:
diff changeset
   177
	 *
hgs
parents:
diff changeset
   178
     * @param aBuffer  serialized buffer.
hgs
parents:
diff changeset
   179
     */
hgs
parents:
diff changeset
   180
    void SerializeL(CMdCSerializationBuffer& aBuffer,
hgs
parents:
diff changeset
   181
    		TMdCOffset& aFreespaceOffset) const;
hgs
parents:
diff changeset
   182
    
hgs
parents:
diff changeset
   183
    /**
hgs
parents:
diff changeset
   184
     * Determines whether the condition requires the object
hgs
parents:
diff changeset
   185
     * to be a not placeholder object.
hgs
parents:
diff changeset
   186
     *
hgs
parents:
diff changeset
   187
     * @return  <code>ETrue</code>, if not placeholder objects are excluded;
hgs
parents:
diff changeset
   188
     *          <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   189
     */
hgs
parents:
diff changeset
   190
    IMPORT_C TBool PlaceholderOnly() const;
hgs
parents:
diff changeset
   191
hgs
parents:
diff changeset
   192
    /** 
hgs
parents:
diff changeset
   193
     * Sets whether the condition requires the object
hgs
parents:
diff changeset
   194
     * to be a not placeholder object.
hgs
parents:
diff changeset
   195
     *
hgs
parents:
diff changeset
   196
     * @param aNotPlaceholder  <code>ETrue</code>, if the object should 
hgs
parents:
diff changeset
   197
     *                                             be a not placeholder object.
hgs
parents:
diff changeset
   198
     *                         <code>EFalse</code> otherwise.
hgs
parents:
diff changeset
   199
     */
hgs
parents:
diff changeset
   200
    IMPORT_C void SetPlaceholderOnly( TBool aPlaceholderOnly );
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
private:
hgs
parents:
diff changeset
   203
hgs
parents:
diff changeset
   204
	/**
hgs
parents:
diff changeset
   205
	 * Constructor.
hgs
parents:
diff changeset
   206
	 *
hgs
parents:
diff changeset
   207
     * @param aCompareMethod  Comparison method.
hgs
parents:
diff changeset
   208
     * @param aObjectId  ID number of an object.
hgs
parents:
diff changeset
   209
	 * @param aObjectDef     Object definition.
hgs
parents:
diff changeset
   210
     * @param aObjectGuidHigh  object's GUID high part.
hgs
parents:
diff changeset
   211
     * @param aObjectGuidLow   object's GUID low part.
hgs
parents:
diff changeset
   212
	 */
hgs
parents:
diff changeset
   213
	CMdEObjectCondition( TObjectConditionCompareMethod aCompareMethod,
hgs
parents:
diff changeset
   214
				TItemId aObjectId, const CMdEObjectDef* aObjectDef,
hgs
parents:
diff changeset
   215
				TInt64 aObjectGuidHigh, TInt64 aObjectGuidLow );
hgs
parents:
diff changeset
   216
hgs
parents:
diff changeset
   217
	/**
hgs
parents:
diff changeset
   218
	 * Constructor.
hgs
parents:
diff changeset
   219
	 *
hgs
parents:
diff changeset
   220
     * @param aCompareMethod  Comparison method.
hgs
parents:
diff changeset
   221
	 */
hgs
parents:
diff changeset
   222
	CMdEObjectCondition( TObjectConditionCompareMethod aCompareMethod );
hgs
parents:
diff changeset
   223
hgs
parents:
diff changeset
   224
    /**
hgs
parents:
diff changeset
   225
     * Second-phase constructor.
hgs
parents:
diff changeset
   226
     */
hgs
parents:
diff changeset
   227
    void ConstructL();
hgs
parents:
diff changeset
   228
hgs
parents:
diff changeset
   229
    /**
hgs
parents:
diff changeset
   230
     * Second-phase constructor.
hgs
parents:
diff changeset
   231
     * 
hgs
parents:
diff changeset
   232
     * @param aString         Text string to look for.
hgs
parents:
diff changeset
   233
     * @param aObjectIds      object IDs to look for.
hgs
parents:
diff changeset
   234
     */
hgs
parents:
diff changeset
   235
    void ConstructL( const RArray<TItemId>* aObjectIds,
hgs
parents:
diff changeset
   236
    		const TDesC* aString, const TMdEUintRange* aRange );
hgs
parents:
diff changeset
   237
hgs
parents:
diff changeset
   238
private:
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
    /** Object definition to match. <code>NULL</code>, if not applicable. */
hgs
parents:
diff changeset
   241
    const CMdEObjectDef* iObjectDef;
hgs
parents:
diff changeset
   242
hgs
parents:
diff changeset
   243
    /** The object's ID. */
hgs
parents:
diff changeset
   244
    TItemId iObjectId;
hgs
parents:
diff changeset
   245
hgs
parents:
diff changeset
   246
    /** The objects' ID. */
hgs
parents:
diff changeset
   247
    RArray<TItemId>* iObjectIds;
hgs
parents:
diff changeset
   248
hgs
parents:
diff changeset
   249
    /** String to match. <code>NULL</code>, if not applicable. */
hgs
parents:
diff changeset
   250
    HBufC* iString;
hgs
parents:
diff changeset
   251
hgs
parents:
diff changeset
   252
    /** Compare method for the string. */
hgs
parents:
diff changeset
   253
    TObjectConditionCompareMethod iCompareMethod;
hgs
parents:
diff changeset
   254
hgs
parents:
diff changeset
   255
    /** 
hgs
parents:
diff changeset
   256
     * Object condition flags 
hgs
parents:
diff changeset
   257
     * not present 
hgs
parents:
diff changeset
   258
     * not placeholder
hgs
parents:
diff changeset
   259
     */
hgs
parents:
diff changeset
   260
    TUint32 iFlags;
hgs
parents:
diff changeset
   261
hgs
parents:
diff changeset
   262
    /** 
hgs
parents:
diff changeset
   263
     * Determines confidentiality level of result object.
hgs
parents:
diff changeset
   264
     * By default level is ELevelNormal, which means that
hgs
parents:
diff changeset
   265
     * query returns only non-confidential objects as result.
hgs
parents:
diff changeset
   266
     */
hgs
parents:
diff changeset
   267
    TObjectConditionConfidentialityLevel iConfidentialityLevel;
hgs
parents:
diff changeset
   268
hgs
parents:
diff changeset
   269
    /** Object's GUID high part. */
hgs
parents:
diff changeset
   270
    TInt64 iGuidHigh;
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
    /** Object's GUID low part. */
hgs
parents:
diff changeset
   273
    TInt64 iGuidLow;
hgs
parents:
diff changeset
   274
    
hgs
parents:
diff changeset
   275
    TMdEUintRange* iRange;
hgs
parents:
diff changeset
   276
    TBool iPlaceholdersOnly;
hgs
parents:
diff changeset
   277
    };
hgs
parents:
diff changeset
   278
hgs
parents:
diff changeset
   279
#endif  // __MDEOBJECTCONDITION_H__