metadataengine/server/inc/mdsquerycriteriadeserialization.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 18 Jan 2010 20:34:07 +0200
changeset 0 c53acadfccc6
permissions -rw-r--r--
Revision: 201001 Kit: 201003

/*
* 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:  Class to deserialize client query cliteria
*
*/

#ifndef __MDSQUERYCRITERIADESERIALIZATION_H__
#define __MDSQUERYCRITERIADESERIALIZATION_H__

#include <e32cmn.h>
#include <e32def.h>
#include <e32des8.h>

#include "mdccommon.h"
#include "mdcserializationbuffer.h"
// added for serialization definitions !!
#include "mdscommoninternal.h"
// end

/**
 * Query criteria serialization.
 */
class CMdSQueryCriteriaDeserialization : public CBase
	{
	friend class CMdSFindSqlClause;
	
public:

	/* Constructors and destructor. */

	/**
	 * Constructs a new serialized query criteria.
	 * @param aCondition  root logic condition to serialize
	 *
	 * @return  query criteria serialization instance
	 *
	 * @leave KErrNotSupported result mode and query type don't match
	 * @leave KErrCompletion   result mode is EModeDistinctValues and query 
	 *                         criteria is incorrect
	 */
	static CMdSQueryCriteriaDeserialization* NewL(CMdCSerializationBuffer& aSerializationBuffer);

	/**
	 * Constructs a new serialized query criteria and leaves it in the
	 * cleanup stack.
	 * @param aCondition  root logic condition to serialize
	 *
	 * @return  query criteria serialization instance
	 *
	 * @leave KErrNotSupported result mode and query type don't match
	 * @leave KErrCompletion   result mode is EModeDistinctValues and query 
	 *                         criteria is incorrect
	 */
	static CMdSQueryCriteriaDeserialization* NewLC(CMdCSerializationBuffer& aSerializationBuffer);

	/**
	 * Destructor.
	 */
	virtual ~CMdSQueryCriteriaDeserialization();

    /**
    * Returns pointer to the serialized data (read only)
    */
    TPtr8 Buffer() const;

    /**
    * Returns pointer to the serialized data (read only)
    */
    const TPtr8* BufferPtr() const;
    
    /**
    * Returns pointer to the serialization buffer
    */
    CMdCSerializationBuffer& SerializationBuffer();

protected:

	/**
	* Returns query's result mode.
	*
	* @return query result mode
	*/
	TQueryResultMode ResultModeL();

	/**
	* Returns query's type.
	*
	* @return query type
	*/
	TQueryType QueryTypeL();

	/**
	* Returns query's namespace definition ID.
	*
	* @return namespace definition ID
	*/
	TDefId NamespaceDefIdL();

	/**
	* Returns query's object definition ID.
	*
	* @return object definition ID
	*/
	TDefId ObjectDefIdL();

	/**
	* Moves position to begin of query's object definitions IDs.
	* 
	* @return if offset is KNoOffset return EFalse, else return ETrue and move 
	*         to that position
	*/
	TBool ObjectDefsIdsL();

	/**
	* Returns query's result's limit value.
	*
	* @return limit value
	*/
	TUint32 LimitL();

	/**
	* Returns query's internal optimization flags.
	*
	* @return query's internal optimization flags
	*/
	TUint32 OptimizationFlagsL();

	/**
	* Returns query's result's offset value.
	*
	* @return offset value
	*/
	TUint32 OffsetL();

	/**
	* Moves position to begin of query's root condition.
	*/
	void RootConditionL();

	/**
	* Moves position to begin of query's order rules.
	*/
	void OrderRulesL();

	/**
	* Moves position to begin of query's property filter.
	*/
	void PropertyFiltersL();

private:

	/* Constructors. */

	/**
	 * Constructor.
	 */
	CMdSQueryCriteriaDeserialization(CMdCSerializationBuffer& aSerializedBuffer);
	
private:

    /** Serialized query criteria. */
    CMdCSerializationBuffer& iSerializedBuffer;
	};


#endif  // __MDEQUERYCRITERIASERIALIZATION_H__