mds_plat/metadata_engine_api/inc/mderelation.h
changeset 0 c53acadfccc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/metadata_engine_api/inc/mderelation.h	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,261 @@
+/*
+* 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 __MDERELATION_H__
+#define __MDERELATION_H__
+
+
+#include <mdeinstanceitem.h>
+
+
+class CMdERelationDef;
+class CMdCSerializationBuffer;
+class CMdENamespaceDef;
+
+
+NONSHARABLE_CLASS(TMdERelation)
+	{
+	public:
+
+		TMdERelation();
+	
+		IMPORT_C TItemId Id() const;
+	
+		/**
+		 * Returns the definition of the relation.
+		 *
+		 * @return  relation definition
+		 */
+		IMPORT_C CMdERelationDef& DefL() const;
+	
+		/**
+		 * Returns the identifier of the left object of the relation.
+		 *
+		 * @return  object identifier
+		 */
+		IMPORT_C TItemId LeftObjectId() const;
+	
+		/**
+		 * Returns the identifier of the right object of the relation.
+		 *
+		 * @return  object identifier
+		 */
+		IMPORT_C TItemId RightObjectId() const;
+
+	public:
+		/**
+		 * Calculates required size for buffer to serialize relation
+		 *
+		 * @return necessary buffer size
+		 */
+		TUint32 RequiredBufferSize() const;
+		
+		/**
+		 * DeSerialize relation
+		 *
+		 * @param aBuffer buffer where is serialized relation
+		 */
+		void DeSerializeL(CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+	private:
+
+		TItemId iId;
+
+		TItemId iLeftObjectId;
+		TItemId iRightObjectId;
+
+		/** Relation definition. */
+		CMdERelationDef* iDef;
+	};
+
+/**
+ * Relation between two objects.
+ */
+NONSHARABLE_CLASS(CMdERelation) : public CMdEInstanceItem
+	{
+public:
+	
+	/* Constructors and destructor. */
+
+	/**
+	 * Create new realation from serialized buffer
+	 *
+	 * @param aBuffer serialized relation
+	 * @return new relation
+	 */
+	static CMdERelation* NewL(CMdESession* aSession, CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+	/**
+	 * Create new realation from serialized buffer and leaves it on stack
+	 *
+	 * @param aBuffer serialized relation
+	 * @return new relation
+	 */
+	static CMdERelation* NewLC(CMdESession* aSession, CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+
+	static CMdERelation* NewL(CMdERelationDef& aDef, TItemId aLeftObjectId, 
+			 TItemId aRightObjectId, TInt32 aParameter);
+	
+	static CMdERelation* NewLC(CMdERelationDef& aDef, TItemId aLeftObjectId, 
+			 TItemId aRightObjectId, TInt32 aParameter);
+	
+	/**
+	 * Destructor.
+	 */
+	virtual ~CMdERelation();
+
+
+	/* Methods. */
+
+	/**
+	 * Returns the definition of the relation.
+	 *
+	 * @return  relation definition
+	 */
+	IMPORT_C CMdERelationDef& Def() const;
+
+	/**
+	 * Returns the identifier of the left object of the relation.
+	 *
+	 * @return  object identifier
+	 */
+	IMPORT_C TItemId LeftObjectId() const;
+
+	/**
+	 * Returns the identifier of the right object of the relation.
+	 *
+	 * @return  object identifier
+	 */
+	IMPORT_C TItemId RightObjectId() const;
+
+	/**
+	 * Returns the parameter value associated with this relation
+	 *
+	 * @return The parameter value
+	 */
+	IMPORT_C TInt32 Parameter() const;
+	
+	/**
+	 * Set the parameter.
+	 * @param aParameter new value for parameter
+	 */
+	IMPORT_C void SetParameter(TInt32 aParameter);
+
+	/**
+	 * Sets left object ID.
+	 * @param aLeftObjectId left object ID
+	 */
+	IMPORT_C void SetLeftObjectIdL( TItemId aLeftObjectId );
+
+	/**
+	 * Sets right object ID.
+	 * @param aRightObjectId right object ID
+	 */
+	IMPORT_C void SetRightObjectIdL( TItemId aRightObjectId );
+
+	/**
+	 * Returns the GUID of the relation.
+	 *
+	 * @param aGuidHigh reference where GuidHigh will be stored
+	 * @param aGuidLow reference where GuidLow will be stored
+	 */
+	IMPORT_C void Guid(TInt64& aGuidHigh, TInt64& aGuidLow) const;
+
+	/**
+	 * Sets the GUID of the relation.
+	 *
+	 * @param aGuidHigh new GuidHigh value
+	 * @param aGuidLow new GuidLow value
+	 */
+	IMPORT_C void SetGuid(const TInt64& aGuidHigh, const TInt64& aGuidLow);
+
+	/**
+	 * Returns last modified date of the relation.
+	 *
+	 * @return last modified date
+	 */
+	IMPORT_C TTime LastModifiedDate() const;
+
+	/**
+	 * Sets last modified date of the relation.
+	 *
+	 * @param aLastModifiedDate last modified date
+	 */
+	IMPORT_C void SetLastModifiedDate(TTime aLastModifiedDate);
+
+	/**
+	 * Calculates required size for buffer to serialize relation
+	 *
+	 * @return necessary buffer size
+	 */
+	TUint32 RequiredBufferSize() const;
+
+	/**
+	 * Serialize relation
+	 *
+	 * @param aBuffer buffer where serialized relation should go
+	 */
+	TMdCOffset SerializeL(CMdCSerializationBuffer& aBuffer, TMdCOffset aFreespaceOffset) const;
+	
+protected:
+
+	/**
+	 * Constructs a new relation.
+	 *
+	 * @param aDef            definition of the new relation
+	 * @param aLeftObjectId   identifier of the left object of the new relation
+	 * @param aRightObjectId  identifier of the right object of the new relation
+	 * @param aParameter value for parameter
+	 * 
+	 */
+	CMdERelation(CMdESession* aSession, TItemId aId, 
+			     CMdERelationDef& aDef, TItemId aLeftObjectId, 
+				 TItemId aRightObjectId, TInt32 aParameter);
+	
+	/**
+	 * Second-phase constructor.
+	 */
+	void ConstructL();
+
+	TMdEInstanceType InstanceType() const;
+
+	
+private:
+
+	/** Relation definition. */
+	CMdERelationDef& iDef;
+
+	/** Left object ID. */
+	TItemId iLeftObjectId;
+
+	/** Right object ID. */
+	TItemId iRightObjectId;
+	
+	/** Parameter value */
+	TInt32 iParameter;
+	
+	/** Guid High and Low */
+	TInt64 iGuidHigh;
+	TInt64 iGuidLow;
+	
+	/** Relations last modified date */
+	TTime iLastModifiedDate;
+	};
+
+#endif  // __MDERELATION_H__