mds_plat/metadata_engine_api/inc/mdelogiccondition.h
changeset 58 fe894bb075c2
parent 51 87e65c44ff3a
child 60 79f826a55db2
--- a/mds_plat/metadata_engine_api/inc/mdelogiccondition.h	Fri Sep 03 10:57:50 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,656 +0,0 @@
-/*
-* Copyright (c) 2009 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:  ?Description
-*
-*/
-
-
-#ifndef __MDELOGICCONDITION_H__
-#define __MDELOGICCONDITION_H__
-
-
-#include <e32std.h>
-
-#include <mdecondition.h>
-#include <mderange.h>
-#include <mderangepropertycondition.h>
-#include <mdetextpropertycondition.h>
-
-
-/* Forward declarations. */
-class CMdEBoolPropertyCondition;
-class CMdEObjectDef;
-class CMdEPropertyDef;
-class CMdERelationDef;
-class CMdEEventDef;
-class CMdCSerializationBuffer;
-class CMdEEventCondition;
-class CMdEObjectCondition;
-class CMdEPropertyCondition;
-class CMdERelationCondition;
-
-/**
- * Logic conditions are used for combining other conditions with boolean
- * AND or OR operators. Each logic condition can have an unlimited number of
- * child conditions. The same operator is applied to all of the child 
- * conditions: (X and Y and Z), (X or Y or Z).
- *
- * CMdELogicCondition provides a number of factory methods for creating and
- * adding new nodes as children of the logic condition node. Always use the
- * factory methods when constructing a query condition tree.
- *
- * A logic condition node owns all of its children.
- */
-NONSHARABLE_CLASS(CMdELogicCondition) : public CMdECondition
-	{
-public:
-
-	/* Constructors and destructor. */
-
-    /**
-     * Constructs a new logic condition node.
-     *
-     * @param aOperator  Operator to use for the child conditions.
-     */
-    IMPORT_C static CMdELogicCondition* NewL(TLogicConditionOperator aOperator);
-
-    /**
-     * Constructs a new logic condition node, leaving the node on the 
-     * cleanup stack.
-     *
-     * @param aOperator  Operator to use for the child conditions.
-     */
-    IMPORT_C static CMdELogicCondition* NewLC(TLogicConditionOperator aOperator);
-
-
-	/**
-	 * Destructor.
-	 */
-	virtual ~CMdELogicCondition();
-
-
-	/* Methods. */
-
-    /**
-     * Returns the operator of the logic condition.
-     *
-     * @return  Logic operator.
-     */
-    IMPORT_C TLogicConditionOperator Operator() const;
-
-    /**
-     * Changes the operator of the logic condition.
-     *
-     * @param aLogicOperator  The new logic operator for the condition.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C void SetOperator(TLogicConditionOperator aLogicOperator);
-
-    /**
-     * Determines the number of child conditions.
-     *
-     * @return  Number of conditions in the logic operation.
-     */
-    IMPORT_C TInt Count() const;
-
-    /**
-     * Returns a child condition node.
-     *
-     * @param aIndex  Index of the condition to return.
-     *
-     * @return  Condition node at the specified index.
-     */
-    IMPORT_C CMdECondition& Condition(TInt aIndex) const;
-
-    /**
-     * Removes a condition node from the logic condition.
-     *
-     * @param aIndex  Index of the condition to remove.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C void Remove(TInt aIndex);
-    
-
-    /* Factory methods for creating and adding new condition nodes into 
-     * the tree. */
-
-    /** 
-     * Creates a new logic condition and makes it a child condition of this
-     * logic condition node.
-     *
-     * @param aLogicOperator  Operator of the new logic condition.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdELogicCondition& AddLogicConditionL(TLogicConditionOperator aLogicOperator);
-
-    /** 
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. The object condition node sets a requirement for
-     * the object class.
-     *
-     * Example:
-     *   // We want the condition to match with image objects.
-     *   CMdELogicCondition* condition = CMdELogicCondition::NewL( ELogicConditionOperatorAnd );
-     *   CleanupStack::PushL( condition );
-     *
-     *   CMdENamespaceDef& defaultNamespace = iMdeSession->GetDefaultNamespaceDefL();
-     *   CMdEObjectDef& imageDef = defaultNamespace.GetObjectDefL( MdeConstants::Image::KImageObject );
-     *   condition->AddObjectConditionL( imageDef );
-     * 
-     * @param aObjectDef     Object definition.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEObjectCondition& 
-        AddObjectConditionL(const CMdEObjectDef& aObjectDef);
-
-    /**
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. The object condition node sets a requirement for
-     * the object's ID number.
-     *
-     * Example:
-     *   CMdERelationQuery* relationQuery = iMdeSession->NewRelationQueryL( defNamespace, this );
-     *   CMdERelationCondition& filterCond = relationQuery->Conditions().
-     *	     AddRelationConditionL( ERelationConditionSideRight );
-     *   // Left object in relation must have this ID.
-     *   filterCond.LeftL().AddObjectConditionL( aObjectId );
-     * 
-     * @param aObjectId  ID number of the object.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEObjectCondition& AddObjectConditionL(TItemId aObjectId);
-
-    /**
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. The object condition node sets a requirement for
-     * the objects' ID numbers.
-     *
-     * @param aObjectId  ID numbers of objects.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     * 
-     */
-    IMPORT_C CMdEObjectCondition& AddObjectConditionL(
-    		const RArray<TItemId>& aObjectIds);
-
-    /**
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. The object condition node sets a requirement for
-     * the object's GUID.
-     *
-     * @param aObjectGuidHigh  GUID high part of the object.
-     * @param aObjectGuidLow  GUID low part of the object.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEObjectCondition& AddObjectConditionL(
-    		TInt64 aObjectGuidHigh, TInt64 aObjectGuidLow);
-
-    /**
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. 
-     *
-     * @param aCompareMethod  Comparison method.
-     * @param aString         Text string to look for.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEObjectCondition& AddObjectConditionL(
-    		TObjectConditionCompareMethod aCompareMethod, 
-    		const TDesC& aString);
-
-    /**
-     * Creates a new object condition and makes it a child condition of this
-     * logic condition node. 
-     *
-     * @param aRange  range for usage count
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEObjectCondition& AddObjectConditionL(
-    		const TMdEUintRange& aRange);
-
-    /**
-     * Creates a new property condition and makes it a child condition of this
-     * logic condition node. The property condition tests if a property 
-     * exists in an object.
-     *	
-     * Example:
-	 *   CMdEPropertyDef& commentDef = objDef.GetPropertyDefL( MdeConstants::MediaObject::KCommentProperty );
-	 *   iQuery->Conditions().AddPropertyConditionL( commentDef );				
-	 *
-     * @param aPropertyDef  The property to look for.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEPropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef);
-
-    /**
-     * Creates a new boolean property condition and makes it a child 
-     * condition of this logic condition node. The property condition
-     * tests the value of a boolean property.
-     *
-     * Example:
-	 *   CMdEPropertyDef& commentDef = objDef.GetPropertyDefL( MdeConstants::MediaObject::KProtectedProperty );
-	 *   iQuery->Conditions().AddPropertyConditionL( commentDef, ETrue );	
-     * 
-     * @param aPropertyDef  Property definition.
-     * @param aBoolValue    Boolean value.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEBoolPropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef, TBool aBoolValue);
-
-    /**
-     * Creates a new integer property condition and makes it a child 
-     * condition of this logic condition node. The property condition defines
-     * a range of integer values. If the property's value is within the range
-     * the condition evaluates to True.
-     *
-     * Example:
-	 *   CMdEPropertyDef& frameCountDef = objDef.GetPropertyDefL( MdeConstants::Image::FrameCount );
-	 *   iQuery->Conditions().AddPropertyConditionL( frameCountDef, TMdEIntRange(0, 5, rangeType) );
-     *
-     * @param aPropertyDef  Property definition.
-     * @param aIntRange     Range of integer values.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEIntRangePropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef, 
-    		const TMdEIntRange& aIntRange);
-
-    /**
-     * Creates a new 64 bit integer property condition and makes it a child 
-     * condition of this logic condition node. The property condition defines
-     * a range of integer values. If the property's value is within the range
-     * the condition evaluates to True.
-     *
-     * @param aPropertyDef  Property definition.
-     * @param aInt64Range     Range of 64 bit integer values.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEInt64RangePropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef,
-    		const TMdEInt64Range& aIntRange);
-
-    /**
-     * Creates a new unsigned integer property condition and makes it a child 
-     * condition of this logic condition node. The property condition defines
-     * a range of unsigned integer values. If the property's value is within 
-     * the range the condition evaluates to True.
-     *
-     * @param aPropertyDef  Property definition.
-     * @param aUintRange    Range of unsigned integer values.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEUintRangePropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef,
-            const TMdEUintRange& aUintRange);
-
-    /**
-     * Creates a new floating-point property condition and makes it a child 
-     * condition of this logic condition node. The property condition defines
-     * a range of floating-point values. If the property's value is within 
-     * the range the condition evaluates to True.
-     *
-     * @param aPropertyDef  Property definition.
-     * @param aRealRange    Range of floating-point values.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERealRangePropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef,
-            const TMdERealRange& aRealRange);
-
-    /**
-     * Creates a new time property condition and makes it a child 
-     * condition of this logic condition node. The property condition defines
-     * a range of time values. If the property's value is within the range
-     * the condition evaluates to True.
-     *
-     * @param aPropertyDef  Property definition.
-     * @param aTimeRange    Range of time values.
-     *
-     * @return  Reference to the new condition node.
-     *
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdETimeRangePropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef,
-            const TMdETimeRange& aTimeRange);
-
-    /**
-     * Creates a new text property condition and makes it a child condition 
-     * of this logic condition node.
-     *
-     * @param aPropertyDef   Property definition.
-     * @param aCompareMethod Comparison method.
-     * @param aText          Text string to look for.
-     * 
-     * @return Reference to the new condition node.
-     * 
-     * @panic TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdETextPropertyCondition& AddPropertyConditionL(
-    		const CMdEPropertyDef& aPropertyDef,
-    		TTextPropertyConditionCompareMethod aCompareMethod,
-            const TDesC& aText);
-
-    /**
-     * Creates a new relation condition and makes it a child condition of this
-     * logic condition node. The new relation condition contains no parameters
-     * by default. It is assumed that the relation condition is augmented
-     * with further conditions for the objects to which the relation is 
-     * attached.
-     *
-     * Example:
-     *   TItemId relationId( 1 );
-     *   CMdERelationCondition& relationCond = relationQuery->Conditions().
-     *		AddRelationConditionL( relationId, ERelationConditionSideRight );
-     * 
-     * @param aRelationId  Relation ID.
-     * @param aSide The side on which an object must be.
-     * 
-     * @return Reference to the new condition node.
-     * 
-     * @panic TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERelationCondition& AddRelationConditionL(TItemId aRelationId, 
-    		TRelationConditionSide aSide = ERelationConditionSideEither);
-
-    /**
-     * Creates a new relation condition and makes it a child condition of this
-     * logic condition node. The new relation condition contains no parameters
-     * by default. It is assumed that the relation condition is augmented
-     * with further conditions for the objects to which the relation is 
-     * attached.
-     * 
-     * Example:
-     *   RArray<TItemId> arrayOfIds;
-     *   arrayOfIds.Append( TItemId( 1 ) );
-     *   arrayOfIds.Append( TItemId( 2 ) );
-     *   CMdERelationCondition& relationCond = relationQuery->Conditions().
-     *		AddRelationConditionL( arrayOfIds, ERelationConditionSideRight );
-     *
-     * @param aRelationIds Array of Relation IDs.
-     * @param aSide The side on which an object must be.
-     * 
-     * @return Reference to the new condition node.
-     * 
-     * @panic TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERelationCondition& AddRelationConditionL(
-    		RArray<TItemId>& aRelationIds, 
-        	TRelationConditionSide aSide = ERelationConditionSideEither);
-    
-    /**
-     * Creates a new relation condition and makes it a child condition of this
-     * logic condition node. The new relation condition contains no parameters
-     * by default. It is assumed that the relation condition is augmented
-     * with further conditions for the objects to which the relation is 
-     * attached.
-     * 
-     * Example:
-     *   CMdERelationCondition& relationCond = relationQuery->Conditions().
-     *		AddRelationConditionL( ERelationConditionSideRight );
-     *
-     * @param aSide The side on which an object must be.
-     *
-     * @return Reference to the new condition node.
-     * 
-     * @panic TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERelationCondition& AddRelationConditionL(
-        		TRelationConditionSide aSide = ERelationConditionSideEither);
-
-    /**
-     * Creates a new relation condition and makes it a child condition of this
-     * logic condition node. The new relation condition tests the relation's 
-     * type. The relation condition can be augmented with further conditions
-     * for the objects to which the relation is attached.
-     *
-	 * @param aRelationDef  relation definition
-     * @param aSide The side on which an object must be. Defaults to 
-     *              ERelationConditionSideEither.
-     * 
-     * @return Reference to the new condition node.
-     * 
-     * @panic TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERelationCondition& AddRelationConditionL(
-    		const CMdERelationDef& aRelationDef, 
-    		TRelationConditionSide aSide = ERelationConditionSideEither);
-
-    /**
-     * Creates a new relation condition and makes it a child condition of this
-     * logic condition node. The new relation condition tests the relation's 
-     * type. The relation condition can be augmented with further conditions
-     * for the objects to which the relation is attached.
-     *
-	 * @param aRelationDef  relation definition
-     * @param aIntRange parameter range conditions
-     * @param aSide  The side on which an object must be.
-     * 
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdERelationCondition& AddRelationConditionL(
-    		const CMdERelationDef& aRelationDef, const TMdEIntRange& aIntRange,
-    		TRelationConditionSide aSide = ERelationConditionSideEither);
-
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition contains no parameters
-     * by default. It is assumed that the event condition is augmented
-     * with further conditions for the object to which the event is attached.
-     * 
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL();
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition tests the event's type.
-     * The event condition can be augmented with further conditions
-     * for the object to which the event is attached.
-     * 
-     * @param aEventId  Event ID.
-     *
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL(TItemId aEventId);
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition tests the event's type.
-     * The event condition can be augmented with further conditions
-     * for the object to which the event is attached.
-     * 
-     * @param aEventDef  Event definition.
-     *
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL(
-    		const CMdEEventDef& aEventDef);
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition tests the event's 
-     * creation time. The event condition can be augmented with further 
-     * conditions for the object to which the event is attached.
-     * 
-     * @param aCreationTimeRange  Time range.
-     *
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL(
-    		const TMdETimeRange& aCreationTimeRange);
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition tests the event's 
-     * source or participant. The event condition can be augmented with 
-     * further conditions for the object to which the event is attached.
-     * 
-     * @param aCompareMethod  Comparison method.
-     * @param aString         Text string to look for.
-     *
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL(
-    		TEventConditionCompareMethod aCompareMethod, const TDesC& aString);
-
-    /**
-     * Creates a new event condition and makes it a child condition of this
-     * logic condition node. The new event condition tests the event's 
-     * creation time. The new event condition also tests the event's 
-     * source or participant. The event condition can be augmented with 
-     * further conditions for the object to which the event is attached.
-     * 
-     * @param aCreationTimeRange  Time range.
-     * @param aCompareMethod      Comparison method.
-     * @param aString             Text string to look for.
-     *
-     * @return  Reference to the new condition node.
-     * 
-     * @panic  TMdEPanic::EConditionLocked  Condition node is locked.
-     */
-    IMPORT_C CMdEEventCondition& AddEventConditionL(
-    		const TMdETimeRange& aCreationTimeRange,
-            TEventConditionCompareMethod aCompareMethod, const TDesC& aString);
-
-    /**
-     * Locking a logic condition causes all children to be locked as well.
-     * Attempting to modify a locked condition causes a panic.
-     *
-     * @param aLocked  <code>ETrue</code> to lock; 
-     *                 <code>EFalse</code> to unlock.
-     */
-    void SetLocked(TBool aLocked = ETrue);
-    
-    /**
-     * Get possible query's internal optimization flags from condition.
-     *
-     * @param aFlaga query's internal optimization flags
-     * @return last level internal optimization flags
-     */
-    TUint32 InternalQueryOptimizationFlags(TUint32& aFlags);
-
-    /**
-     * Get required size of serialized buffer when this is serialized.
-     *
-     * @return required size of serialized buffer
-     */
-    TUint32 RequiredBufferSize() const;
-
-    /**
-     * Serialize own data to serialized buffer (correct position must be set 
-     * before calling).
-	 *
-     * @param aBuffer  serialized buffer.
-     */
-    void SerializeL(CMdCSerializationBuffer& aBuffer, 
-    		TMdCOffset& aFreespaceOffset) const;
-
-protected:
-
-	/* Constructors. */
-
-	/**
-	 * Constructor. 
-	 *
-	 * @param aOperator  Logic operator.
-	 */
-	CMdELogicCondition(TLogicConditionOperator aOperator);
-
-	/**
-	 * Second-phase constructor.
-	 */
-	void ConstructL();
-
-
-	/* Utility methods. */
-
-    /**
-     * Makes an existing condition node a child node of this logic condition.
-     * The logic condition takes ownership of the node.
-     *
-     * @param aCondition  Condition node.
-     *
-     * @return  Reference to the added node (aCondition).
-     */
-    CMdECondition& AddL(CMdECondition* aCondition);
-
-
-private:
-
-    /** Type of the condition. */
-    TLogicConditionOperator iOperator;
-
-    /** Children of the condition. The logic condition owns all the 
-        child nodes. */
-    RPointerArray<CMdECondition> iChildren;
-
-	TUint32 iOptimizationFlags;
-    };
-
-#endif  // __MDELOGICCONDITION_H__