--- a/mds_plat/metadata_engine_api/inc/mdesession.h Fri Sep 03 10:57:50 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1803 +0,0 @@
-/*
-* Copyright (c) 2005-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: Metadata engine client session
-*
-*/
-
-
-#ifndef __MDESESSION_H__
-#define __MDESESSION_H__
-
-
-#include <e32base.h>
-#include <badesca.h>
-
-#include <mdccommon.h>
-
-
-/* Forward declarations. */
-class CMdESession;
-class CMdEObjectDef;
-class CMdERelationDef;
-class CMdEEventDef;
-class CMdEObject;
-class TMdEObject;
-class CMdERelation;
-class TMdERelation;
-class CMdEEvent;
-class CMdEObjectQuery;
-class CMdERelationQuery;
-class CMdEEventQuery;
-class CMdELogicCondition;
-class CMdEInstanceItem;
-class RMdEEngineSession;
-class MMdEQueryObserver;
-class CMdENamespaceDef;
-class RMdEDataBuffer;
-class CMdECondition;
-
-
-
-/**
- * Observer interface for a metadata engine session.
- *
- *
- *
- * Examples of MdE session usage:
- *
- * The class that needs a MdE session needs to implement MMdESessionObserver interface to get
- * a notification of completed session opening or an error that has occurred.
- *
- * class CMdESessionExample : public MMdESessionObserver
- * {
- * void HandleSessionOpened(CMdESession& aSession, TInt aError);
- * void HandleSessionError(CMdESession& aSession, TInt aError);
- * ...
- *
- * CMdESession* iMdeSession;
- * };
- *
- * The session is opened simply by creating an instance of CMdESession.
- *
- * void CMdESessionExample::OpenSession()
- * {
- * iMdeSession = CMdESession::NewL( *this );
- * }
- *
- * void CMdESessionExample::HandleSessionOpened(CMdESession& aSession, TInt aError)
- * {
- * if ( KErrNone != aError ) {
- * // Error occurred when opening session. iMdeSession must be deleted and new
- * // session opened if we wish to use MdE.
- *
- * delete iMdeSession; iMdeSession = NULL;
- * return;
- * }
- *
- * // The session was opened successfully.
- * ...
- * }
- *
- * void CMdESessionError::HandleSessionError(CMdESession& aSession, TInt aError)
- * {
- * // This function is called when an error has occurred in the session by some
- * // external source (e.g. other clients). It’s important to notice, that
- * // this method is called when the session has already been opened, not when
- * // error happens during opening. Session can't be used anymore and it must be deleted.
- *
- * delete iMdeSession; iMdeSession = NULL;
- * }
- */
-class MMdESessionObserver
- {
-public:
-
- /**
- * Called to notify the observer that opening the session has been
- * completed and, if the opening succeeded, the session is ready for use.
- *
- * @param aSession session
- * @param aError <code>KErrNone</code>, if opening the session succeeded;
- * or one of the system-wide error codes, if opening the
- * session failed
- */
- virtual void HandleSessionOpened(CMdESession& aSession, TInt aError) = 0;
-
- /**
- * Called to notify the observer about errors, which are not a direct
- * consequence of the operations initiated by the client but caused by
- * some external source (e.g., other clients). The error cannot be
- * recovered and all on-going operations initiated by the client have been
- * aborted. Any attempts to continue using the session will cause a panic.
- * The client should close the session immediately and try to open a new
- * session, if it needs to continue using the metadata engine.
- *
- * @param aSession session
- * @param aError one of the system-wide error codes
- */
- virtual void HandleSessionError(CMdESession& aSession, TInt aError) = 0;
- };
-
-
-/**
- * Observer interface for modifications of the metadata engine schema.
- */
-class MMdESchemaObserver
- {
-public:
-
- /**
- * Called to notify the observer that the schema has been modified.
- *
- * @param none
- */
- virtual void HandleSchemaModified() = 0;
- };
-
-/**
- * Observer interface for modifications of the objects in the metadata engine
- * database.
- *
- * Examples of observers.
- * A class that is interested in observing events in the DB must implement observer interfaces
- * and register as observer. Following examples show how this is done for objects but observing
- * relations and events works the same way.
- *
- * class CMdeObserverExample : public MMdEObjectObserver, public MMdEObjectPresentObserver
- * {
- * void HandleObjectNotification(CMdESession& aSession, TObserverNotificationType aType,
- * const RArray<TItemId>& aObjectIdArray);
- * void HandleObjectPresentNotification(CMdESession& aSession, TBool aPresent,
- * const RArray<TItemId>& aObjectIdArray);
- * ...
- * CMdESession* iMdeSession;
- * };
- *
- * void CMdeObserverExample::ConstructL()
- * {
- * // Register this class as observer and start listening to object remove events.
- * // The logic condition can be as complicated as is necessary. In this example
- * // the condition as simple as possible.
- * CMdELogicCondition* condition = CMdELogicCondition::NewL( ELogicConditionOperatorAnd );
- * iMdeSession->AddObjectObserverL( *this, condition, ENotifyRemove,
- * &iMdeSession->GetDefaultNamespaceDefL() );
- *
- * // Start listening to changes in object present status.
- * iMdeSession->AddObjectPresentObserverL( *this );
- * }
- *
- * @see MMdEObjectObserver::HandleObjectNotification
- * void CMdeObserverExample::HandleObjectNotification(CMdESession& aSession, TObserverNotificationType aType,
- * const RArray<TItemId>& aObjectIdArray)
- * {
- * if ( aType == ENotifyAdd )
- * {
- * // object was added to DB
- * } else if ( aType == ENotifyModify )
- * {
- * // object was modified
- * } else if ( aType == ENotifyRemove )
- * {
- * // object was removed from DB
- * }
- *
- * // aObjectIdArray contains ids for all objects that were added/modified/removed
- * }
- *
- * void CMdeObserverExample::HandleObjectPresentNotification(CMdESession& aSession,
- * TBool aPresent, const RArray<TItemId>& aObjectIdArray)
- * {
- * if ( aPresent )
- * {
- * // objects in aObjectIdArray were set as present
- * }
- * }
- */
-class MMdEObjectObserver
- {
-public:
-
- /**
- * Called to notify the observer that new objects has been
- * added/modified/removed in the metadata engine database.
- *
- * @param aSession session
- * @param aType defines if object was added/modified/remove
- * @param aObjectIdArray IDs of added object
- * @see CMdESession::AddObjectObserverL
- * @see CMdELogicCondition
- */
- virtual void HandleObjectNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TItemId>& aObjectIdArray) = 0;
- };
-
-class MMdEObjectObserverWithUri
- {
-public:
-
- /**
- * Called to notify the observer that new objects has been
- * added/modified/removed in the metadata engine database.
- *
- * @param aSession session
- * @param aType defines if object was added/modified/remove
- * @param aObjectIdArray IDs of added object
- * @param aUriArray Uris of added object
- * @see CMdESession::AddObjectObserverL
- * @see CMdELogicCondition
- */
- virtual void HandleUriObjectNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TItemId>& aObjectIdArray,
- const RPointerArray<HBufC>& aObjectUriArray) = 0;
- };
-
-/**
- * Observer interface for modifications of the objects in the metadata engine
- * database.
- */
-class MMdEObjectPresentObserver
- {
-public:
-
- /**
- * Called to notify the observer that objects has been set
- * to present or not present state in the metadata engine database.
- *
- * @param aSession session
- * @param aPresent state: ETrue - present or EFales - not present
- * @param aObjectIdArray object IDs which are set to present state
- */
- virtual void HandleObjectPresentNotification(CMdESession& aSession,
- TBool aPresent, const RArray<TItemId>& aObjectIdArray) = 0;
- };
-
-/**
- * Observer interface for modifications of the relations in the metadata
- * engine database.
- */
-class MMdERelationPresentObserver
- {
-public:
-
- /**
- * Called to notify the observer that objects has been set
- * to present or not present state in the metadata engine database.
- *
- * @param aSession session
- * @param aPresent state: ETrue - present or EFales - not present
- * @param aObjectIdArray object IDs which are set to present state
- */
- virtual void HandleRelationPresentNotification(CMdESession& aSession,
- TBool aPresent, const RArray<TItemId>& aRelationIdArray) = 0;
- };
-
-
-/**
- * Observer interface for modifications of relations in the metadata engine
- * database. This observer returns only relations IDs.
- */
-class MMdERelationObserver
- {
-public:
-
- /**
- * Called to notify the observer that new relations has been
- * added/modified/removed in the metadata engine database.
- *
- * @param aSession session
- * @param aType defines if relation was added/modified/remove
- * @param aRelationIdArray IDs of relations
- */
- virtual void HandleRelationNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TItemId>& aRelationIdArray) = 0;
- };
-
-/**
- * Observer interface for modifications of relations in the metadata engine
- * database. This observer returns relations (not only IDs).
- */
-class MMdERelationItemObserver
- {
-public:
-
- /**
- * Called to notify the observer that new relations has been
- * added/modified/removed in the metadata engine database.
- *
- * @param aSession session
- * @param aType if relation was added/modified/remove
- * @param aRelationArray relations
- */
- virtual void HandleRelationItemNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TMdERelation>& aRelationArray) = 0;
- };
-
-/**
- * Observer interface for additions or removes of new events to the metadata
- * engine database.
- */
-class MMdEEventObserver
- {
-public:
-
- /**
- * Called to notify the observer that new events has been
- * added or removed in the metadata engine database.
- *
- * @param aSession session
- * @param aType if event was added or removed
- * @param aEventIdArray IDs of added events
- */
- virtual void HandleEventNotification(CMdESession& aSession,
- TObserverNotificationType aType,
- const RArray<TItemId>& aEventIdArray) = 0;
-
- };
-
-/**
- * Metadata engine session.
- */
-NONSHARABLE_CLASS(CMdESession) : public CBase
- {
-public:
-
- /* Constructors and destructor. */
-
- /**
- * Opens a new metadata engine session.
- *
- * @param aObserver observer to notify when opening the session has been
- * completed
- *
- * @return metadata engine session
- */
- IMPORT_C static CMdESession* NewL(MMdESessionObserver& aObserver);
-
- /**
- * Opens a new metadata engine session and leaves the session in the
- * cleanup stack.
- *
- * @param aObserver observer to notify when opening the session has been
- * completed
- *
- * @return metadata engine session
- */
- IMPORT_C static CMdESession* NewLC(MMdESessionObserver& aObserver);
-
- /**
- * Destructor.
- */
- virtual ~CMdESession();
-
- /* Methods for managing namespace definitions. */
-
- /**
- * Returns the number of namespace definitions.
- *
- * @return number of namespace definitions
- */
- virtual TInt NamespaceDefCount() const = 0;
-
- /**
- * Returns the namespace definition at the specified index.
- *
- * @param aIndex index
- *
- * @return namespace definition
- */
- virtual CMdENamespaceDef& NamespaceDefL(TInt aIndex) = 0;
-
- /**
- * Returns the namespace definition with the specified name.
- *
- * @param aName name
- *
- * @return namespace definition; or 0, if there is no object definition
- * with the specified name
- */
- virtual CMdENamespaceDef& GetNamespaceDefL(const TDesC& aName) = 0;
-
- /* Returns the default namespace definition.
- *
- * @return the default namespace definition.
- */
- virtual CMdENamespaceDef& GetDefaultNamespaceDefL() = 0;
-
- /**
- * Adds a new relation definition to namespace,
- *
- * Example:
- * void AddRelationL()
- * {
- * _LIT( TestRelation, "TestRelation" );
- * TBuf <15> relname( TestRelation );
- * iMdeSession->AddRelationDefL( *iDefaultNamespaceDef, relname );
- * }
- *
- * @param aNamespaceDef namespace definition to which relation belongs
- * @param aName relation definitions name
- */
- virtual void AddRelationDefL(const CMdENamespaceDef &aNamespaceDef,
- const TDesC &aName) = 0;
-
- /**
- * Adds a new event definition to namespace.
- *
- * Example:
- * void AddEventDefL()
- * {
- * _LIT( TestEvent, "TestEvent" );
- * TBuf <10> eventName( TestEvent );
- * iMdeSession->AddRelationDefL( *iDefaultNamespaceDef, eventName );
- * }
- *
- * @param aNamespaceDef namespace definition to which event belongs
- * @param aName event definitions name
- */
- virtual void AddEventDefL(const CMdENamespaceDef &aNamespaceDef,
- const TDesC &aName) = 0;
-
- /* Methods for managing objects. */
-
- /**
- * Adds multiple instance items to metadata database.
- * The array contains the items, any other type than object, relation or
- * event causes a leave.
- *
- * @param aItems list of items to add
- * @return first item error
- */
- virtual TInt AddItemsL( RPointerArray<CMdEInstanceItem>& aItems ) = 0;
-
- /**
- * Commits multiple instance items to metadata database.
- * The array contains the items, any other type than object, relation or
- * event causes a leave.
- *
- * @param aItems list of items to add
- * @return first item error
- */
- virtual TInt UpdateItemsL( RPointerArray<CMdEInstanceItem>& aItems ) = 0;
-
- /**
- * Adds multiple instance items asynchronously to metadata database.
- * The array contains the items, any other type than object, relation or
- * event causes a leave. Returned serialized list of item IDs must be
- * deserialized with DeserializeItemsL method.
- *
- * Example:
- * class CExampleActiveObject : public CActive
- * {
- * void CActiveObject::AddItemsL();
- * ...
- * RPointerArray<CMdEInstanceItem> iItems;
- * RMdEDataBuffer iResultBuffer;
- * };
- *
- * void CExampleActiveObject::AddItemsL()
- * {
- * iMdeSession->AddItemsAsyncL( iItems, iStatus, iResultBuffer );
- * SetActive();
- * }
- *
- * When adding items is finished, RunL() will be called.
- *
- * @param aItems List of item to add.
- * @param aStatus Returns the result code after the asynchronous call
- * completes.
- * @param aSerializedItemIds Returned serialized list of item IDs.
- */
- virtual void AddItemsAsyncL(
- RPointerArray<CMdEInstanceItem>& aItems,
- TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedItemIds) = 0;
-
- /**
- * Commits multiple instance items asynchronously to metadata database.
- * The array contains the items, any other type than object, relation or
- * event causes a leave. Returned serialized list of item IDs must be
- * deserialized with DeserializeItemsL method.
- *
- * Example:
- * class CExampleActiveObject : public CActive
- * {
- * void CActiveObject::UpdateItemsL();
- * ...
- * RPointerArray<CMdEInstanceItem> iItems;
- * RMdEDataBuffer iResultBuffer;
- * };
- *
- * void CExampleActiveObject::UpdateItemsL()
- * {
- * iMdeSession->UpdateItemsAsyncL( iItems, iStatus, iResultBuffer );
- * SetActive();
- * }
- *
- * @param aItems List of item to add.
- * @param aStatus Returns the result code after the asynchronous call
- * completes.
- * @param aSerializedItemIds Returned serialized list of item IDs.
- */
- virtual void UpdateItemsAsyncL(
- RPointerArray<CMdEInstanceItem>& aItems,
- TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedItemIds ) = 0;
-
- /**
- * Constructs a new empty object. Note that the object is not inserted in
- * the database. The ownership of the new object is passed to the caller
- * (that is, the caller is responsible for deleting the object).
- *
- * Example:
- * _LIT( KObjectDef, "ObjectDefName" );
- * TBuf<13> objDefStr( KObjectDef );
- * CMdENamespaceDef& defNS = iMdESession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& mdeObjectDef = defNS.GetObjectDefL( objDefStr );
- * CMdEObject* mdeObject = iMdESession->NewObjectL( mdeObjectDef, aUri );
- *
- * @param aDef definition of the new object
- * @param aUri URI of the new object
- * @param aMediaId media ID of the new object (default 0)
- *
- * @return new object
- */
- virtual CMdEObject* NewObjectL( CMdEObjectDef& aDef, const TDesC& aUri,
- TUint32 aMediaId = 0 ) = 0;
-
- /**
- * Constructs a new empty object and leaves it in the cleanup stack.
- * Note that the object is not inserted in the database. The ownership of
- * the new object is passed to the caller (that is, the caller is
- * responsible for deleting the object).
- *
- * Example:
- * _LIT( KObjectDef, "ObjectDefName" );
- * TBuf<13> objDefStr( KObjectDef );
- * CMdENamespaceDef& defNS = iMdESession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& mdeObjectDef = defNS.GetObjectDefL( objDefStr );
- * CMdEObject* mdeObject = iMdESession->NewObjectLC( mdeObjectDef, aUri );
- *
- * @param aDef definition of the new object
- * @param aUri URI of the new object
- * @param aMediaId media ID of the new object (default 0)
- *
- * @return new object
- */
- virtual CMdEObject* NewObjectLC( CMdEObjectDef& aDef, const TDesC& aUri,
- TUint32 aMediaId = 0 ) = 0;
-
- /**
- * Adds the specified new object to metadata database.
- * aObject is modified so that it has the new item ID.
- * If object adding fails object's ID is KNoId,
- * otherwise object adding is successful.
- *
- * @param aObject object to be added
- *
- * @return item ID of the added object
- */
- virtual TItemId AddObjectL(CMdEObject& aObject) = 0;
-
- /**
- * Adds multiple object items to the metadata engine database.
- * The array contains the object items. aObjects are modified
- * so that those has the new item IDs. If object adding fails
- * object's ID is KNoId, otherwise object adding is successful.
- *
- * @param aObjects list of objects to be added
- * @return first object error
- */
- virtual TInt AddObjectsL(RPointerArray<CMdEObject>& aObjects) = 0;
-
- /**
- * Deserialize serialized list of item IDs
- *
- * @param aSerializedItemIds serialized list of item IDs
- * @param aResultObjects if not NULL object IDs are deserialized from
- * buffer to this ID array
- * @param aResultEvents if not NULL event IDs are deserialized from
- * buffer to this ID array
- * @param aResultRelations if not NULL relation IDs are deserialized
- * from buffer to this ID array
- *
- * @return error code of first failed item, if no errors KErrNone
- */
- virtual TInt DeserializeIdsL( RMdEDataBuffer& aSerializedItemIds,
- RArray<TItemId>* aResultObjects = NULL,
- RArray<TItemId>* aResultEvents = NULL,
- RArray<TItemId>* aResultRelations = NULL ) = 0;
-
- /**
- * Deserialize serialized list of items
- *
- * @param aSerializedItems serialized list of items
- * @param aItems items are deserialized from buffer to this item array
- *
- * @return first item error
- */
- virtual TInt DeserializeItemsL( RMdEDataBuffer& aSerializedItems,
- RPointerArray<CMdEInstanceItem>& aItems ) = 0;
-
- /**
- * Removes the object with the specified identifier from metadata database.
- *
- * @param aId identifier
- * @param aNamespaceDef namespace where object is removed, if NULL default
- * namespace is used
- * @return KNoId if removing has failed, otherwise removed object's ID
- */
- virtual TItemId RemoveObjectL( TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes the object with the specified URI from metadata database.
- *
- * @param aUri URI
- * @param aNamespaceDef namespace from remove object, if NULL default
- * namespace is used
- * @return KNoId if removing has failed, otherwise removed object's ID
- */
- virtual TItemId RemoveObjectL( const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes the array of objects with the specified identifier from
- * metadata database.
- *
- * @param aId object IDs to be removed
- * @param aResult result array where succefully removed object IDs are
- * added (KNoId is added from those objects which removing
- * has failed)
- * @param aNamespaceDef namespace where object is removed, if NULL default
- * namespace is used
- * @return first item error
- */
- virtual TInt RemoveObjectsL(
- const RArray<TItemId>& aId, RArray<TItemId>& aResult,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes the array of objects with the specified URI from metadata
- * database.
- *
- * @param aUri object URIs to be removed
- * @param aResult result array where succefully removed object IDs are
- * added (KNoId is added from those objects which removing
- * has failed)
- * @param aNamespaceDef namespace where object is removed, if NULL default
- * namespace is used
- * @return first item error
- */
- virtual TInt RemoveObjectsL(
- const RPointerArray<TDesC>& aUri, RArray<TItemId>& aResult,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Asynchronously removes the array of objects with the specified
- * object IDs from metadata database. Returned serialized list of item IDs
- * must be deserialized with DeserializeIdsL method.
- *
- * @param aId object IDs to be removed
- * @param aStatus returns the result code after the asynchronous call
- * completes.
- * @param aSerializedObjectIds returned serialized list of object IDs
- * @param aNamespaceDef namespace where object is removed, if NULL default
- * namespace is used
- */
- virtual void RemoveObjectsAsyncL(
- const RArray<TItemId>& aId, TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedObjectIds,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Asynchronously removes the array of objects with the specified URI from
- * metadata database. Returned serialized list of item IDs must be
- * deserialized with DeserializeIdsL method.
- *
- * @param aUri object URIs to be removed
- * @param aStatus returns the result code after the asynchronous call
- * completes.
- * @param aSerializedObjectIds returned serialized list of object IDs
- * @param aNamespaceDef namespace where object is removed, if NULL default
- * namespace is used
- */
- virtual void RemoveObjectsAsyncL(
- const RPointerArray<TDesC>& aUri, TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedObjectIds,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Returns the object with the specified ID and specified object
- * definition.
- *
- * Example:
- * CMdENamespaceDef& defaultNamespace = iSession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& imageObjDef = defaultNamespace.GetObjectDefL( MdeConstants::Image::KImageObject );
- * CMdEObject* object = iSession->GetObjectL( aObjectId, imageObjDef );
- *
- * @param aId object ID
- * @param aObjectDef object definition
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL( const TItemId aId,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Returns the object (object may contain only properties defined in
- * "Object") with the specified ID and specified namespace (if namespace
- * is NULL, the default namespace is used).
- *
- * @param aId object ID
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL( const TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Returns the object (object will contain all it's properties)
- * with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used).
- *
- * @param aId object ID
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetFullObjectL( const TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Returns the object with the specified GUID and specified object
- * definition.
- *
- * Example:
- * CMdENamespaceDef& defaultNamespace = iSession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& imageObjDef = defaultNamespace.GetObjectDefL( MdeConstants::Image::KImageObject );
- * CMdEObject* object = iMdeSession->GetObjectL( 12345, 67890, imageObjDef );
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aObjectDef object definition
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Returns the object (object may contain only properties definied in
- * "Object") with the specified GUID and specified namespace (if namespace
- * is NULL, the default namespace is used).
- *
- * Example:
- * CMdEObject* object = iMdeSession->GetObjectL( 12345, 67890 );
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Returns the object (object will contain all it's properties)
- * with the specified GUID and specified namespace
- * (if namespace is NULL, the default namespace is used).
- *
- * Example:
- * CMdEObject* object = iMdeSession->GetFullObjectL( 12345, 67890 );
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetFullObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Returns the object with the specified URI and specified object
- * definition.
- *
- * Example:
- * CMdENamespaceDef& defaultNamespace = iSession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& imageObjDef = defaultNamespace.GetObjectDefL( MdeConstants::Image::KImageObject );
- * CMdEObject* object = iMdeSession->GetObjectL( aUri, imageObjDef );
- *
- * @param aUri object URI
- * @param aObjectDef object definition
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL( const TDesC& aUri,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Returns the object (object may contain only properties definied in
- * "Object") with the specified URI specified namespace (if namespace is
- * NULL, the default namespace is used).
- *
- * @param aUri object URI
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetObjectL( const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Returns the object (object will contain all it's properties) with the
- * specified URI specified namespace (if namespace is NULL, the default
- * namespace is used).
- *
- * @param aUri object URI
- * @param aNamespaceDef namespace
- *
- * @return object or NULL, if there is no object with the specified
- * identifier in the metadata engine database
- */
- virtual CMdEObject* GetFullObjectL( const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Opens the object with the specified ID and specified object
- * definition for modifications. The object is locked so that nobody else
- * can open it for modifications. The modifications are committed by
- * calling the <code>CommitObject()</code> method, which releases the lock.
- * The modifications can be canceled by calling the
- * <code>CancelObject()</code> method, which also releases the lock.
- *
- * Example:
- * CMdENamespaceDef& defaultNamespace = iMdeSession->GetDefaultNamespaceDefL();
- * CMdEObjectDef& imageDef = defaultNamespace.GetObjectDefL( MdeConstants::Image::KImageObject );
- * CMdEObject* image = iMdESession->OpenObjectL( 17, imageDef );
- *
- * CMdEPropertyDef& lastModDatePropDef = imageDef.GetPropertyDefL(
- * Object::KLastModifiedDateProperty );
- *
- * CMdEProperty* lastModDateProp = NULL;
- * image->Property( lastModDatePropDef, lastModDateProp, 0 );
- *
- * TTime currenttime( 0 );
- * currenttime.UniversalTime();
- *
- * if ( lastModDateProp )
- * {
- * lastModDateProp->SetTimeValueL( currenttime );
- * }
- * else
- * {
- * image->AddTimePropertyL( lastModDatePropDef, currenttime );
- * }
- * }
- * iMdeSession->CommitObjectL( *image );
- *
- *
- * @param aId object ID
- * @param aObjectDef object definition
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL( const TItemId aId,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Opens the object (object may contain only properties definied in "Object")
- * with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aId object ID.
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL( const TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Opens the object (object will contain all it's properties)
- * with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aId object ID.
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenFullObjectL( const TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
-
- /**
- * Opens the object with the specified GUID and specified object
- * definition for modifications. The object is locked so that nobody else
- * can open it for modifications. The modifications are committed by
- * calling the <code>CommitObject()</code> method, which releases the lock.
- * The modifications can be canceled by calling the
- * <code>CancelObject()</code> method, which also releases the lock.
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aObjectDef object definition
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Opens the object (object may contain only properties definied in "Object")
- * with the specified GUID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Opens the object (object will contain all it's properties)
- * with the specified GUID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aGuidHigh GUID high
- * @param aGuidLow GUID low
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenFullObjectL(
- const TInt64 aGuidHigh, const TInt64 aGuidLow,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
-
- /**
- * Opens the object with the specified URI for modifications and specified
- * object definition. The object is locked so that nobody else can open it
- * for modifications. The modifications are committed by calling the
- * <code>CommitObject()</code> method, which releases the lock. The
- * modifications can be canceled by calling the <code>CancelObject()</code>
- * method, which also releases the lock.
- *
- * @param aUri object URI
- * @param aObjectDef object definition
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL( const TDesC& aUri,
- CMdEObjectDef& aObjectDef ) = 0;
-
- /**
- * Opens the object (object may contain only properties definied in "Object")
- * with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aUri Object URI.
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenObjectL( const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Opens the object (object will contain all it's properties)
- * with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used) for modifications.
- * The object is locked so that nobody else can open it for modifications.
- * The modifications are committed by calling the <code>CommitObject()</code>
- * method, which releases the lock. The modifications can be canceled by
- * calling the <code>CancelObject()</code> method, which also releases the
- * lock.
- *
- * @param aUri Object URI.
- * @param aNamespaceDef namespace
- *
- * @return Object or NULL, if there is no object with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEObject* OpenFullObjectL( const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Gets metadata object id, definition and some flags by URI. Does not return the whole object.
- *
- * @param aObject on return contains information about the metadata object
- * @param aUri metadata object URI
- * @param aNamespaceDef namespace definition. If namespace is NULL then the default namespace is used.
- */
- virtual void CheckObjectL( TMdEObject& aObject, const TDesC& aUri,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Gets metadata object id, definition and some flags by id. Does not return the whole object.
- *
- * @param aObject on return contains information about the metadata object
- * @param aId metadata object id
- * @param aNamespaceDef namespace definition. If namespace is NULL then the default namespace is used.
- */
- virtual void CheckObjectL( TMdEObject& aObject, TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Gets an array of TMdEObject objects that contain metadata object ids, definitions and
- * some flags by object ids. Does not return whole objects.
- *
- * @param aObjects on return contains an array of objects containing information about metadata objects
- * @param aIds array of metadata object ids
- * @param aNamespaceDef namespace definition. If namespace is NULL then the default namespace is used.
- */
- virtual void CheckObjectL( RArray<TMdEObject>& aObjects,
- const RArray<TItemId>& aIds,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Commits the modifications made to the object to the database
- * and releases the modification lock.
- *
- * @param aObject Object.
- */
- virtual void CommitObjectL(CMdEObject& aObject) = 0;
-
- /**
- * Commits the modifications made to objects to the database
- * and releases the modification locks.
- *
- * @param aObject Object.
- */
- virtual void CommitObjectsL(RPointerArray<CMdEObject>& aObjects) = 0;
-
- /**
- * Cancels the modifications made to the object and releases the
- * modification lock.
- *
- * @param aObject Object.
- */
- virtual TItemId CancelObjectL(CMdEObject& aObject) = 0;
-
-
- /* Methods for managing relations. */
-
- /**
- * Returns the relation with the specified ID and specified namespace
- * (if namespace is NULL, the default namespace is used).
- *
- * Note that the ownership of the returned relation is passed to the
- * caller of the method (that is, the caller is responsible for deleting
- * the relation).
- *
- * @param aId relation ID
- * @param aNamespaceDef namespace
- *
- * @return relation or NULL, if there is no relation with the specified ID
- * in the metadata engine database
- */
- virtual CMdERelation* GetRelationL(TItemId aId,
- CMdENamespaceDef* aNamespacedef = NULL) = 0;
-
- /**
- * Constructs a new empty relation. Note that the relation is not inserted
- * in the database. The ownership of the new relation is passed to the
- * caller (that is, the caller is responsible for deleting the relation).
- *
- * Example:
- * CMdERelationDef& relationDef = namespaceDef.GetRelationDefL( MdeConstants::Relations::KContains );
- *
- * CMdERelation* relation = iMdeSession->NewRelationLC( relationDef, albumObject->Id(), audioObject->Id() );
- * iMdeSession->AddRelationL( *relation );
- *
- * @param aDef definition of the new relation
- * @param aLeftObjectId id of the left side of the relation
- * @param aRightObjectId id of the right side of the relation
- * @param aParameter the relation parameter
- *
- * @return new relation
- */
- virtual CMdERelation* NewRelationLC(CMdERelationDef& aDef,
- TItemId aLeftObjectId, TItemId aRightObjectId,
- TInt32 aParameter = 0) = 0;
-
- /**
- * Constructs a new empty relation. Note that the relation is not inserted
- * in the database. The ownership of the new relation is passed to the
- * caller (that is, the caller is responsible for deleting the relation).
- *
- * Example:
- * CMdERelationDef& relationDef = namespaceDef.GetRelationDefL( MdeConstants::Relations::KContains );
- *
- * CMdERelation* relation = iMdeSession->NewRelationL( relationDef, albumObject->Id(), audioObject->Id() );
- * iMdeSession->AddRelationL( *relation );
- *
- * @param aDef definition of the new relation
- * @param aLeftObjectId id of the left side of the relation
- * @param aRightObjectId id of the right side of the relation
- * @param aParameter the relation parameter
- *
- * @return new relation
- */
- virtual CMdERelation* NewRelationL(CMdERelationDef& aDef,
- TItemId aLeftObjectId, TItemId aRightObjectId,
- TInt32 aParameter = 0) = 0;
-
- /**
- * Adds a new relation to the metadata engine database.
- *
- * @param relation
- *
- * @return identifier of the new relation
- */
- virtual TItemId AddRelationL( CMdERelation& aRelation ) = 0;
-
- /**
- * Commits changes made to the relation to the metadata engine database.
- *
- * @param relation
- *
- * @return identifier of the new relation
- */
- virtual TItemId UpdateRelationL( CMdERelation& aRelation ) = 0;
-
- /**
- * Removes the relation with the specified identifier and specified
- * namespace (if namespace is NULL, the default namespace is used)
- * from the metadata engine database.
- *
- * @param aId ID of the relation to remove.
- * @param aNamespaceDef namespace
- *
- * @return relation ID or KNoId, if there is no relation with the
- * specified ID in the metadata engine database
- */
- virtual TItemId RemoveRelationL( TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes multiple relations with the specified IDs and specified
- * namespace (if namespace is NULL, the default namespace is used)
- * from the metadata engine database.
- *
- * @param aId IDs of relations to remove.
- * @param aSuccessful Successfully removed IDs of relations (if removing
- * has failed KNoId is added).
- * @param aNamespaceDef namespace
- */
- virtual TInt RemoveRelationsL(
- const RArray<TItemId>& aId, RArray<TItemId>& aSuccessful,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes multiple relations asynchronous with the specified IDs and
- * specified namespace (if namespace is NULL, the default namespace is
- * used) from the metadata engine database. Returned serialized list of
- * item IDs must be deserialized with DeserializeIdsL method.
- *
- * @param aId IDs of relations to remove.
- * @param aStatus returns the result code after the asynchronous call
- * completes.
- * @param aSerializedRelationIds returned serialized list of relation IDs
- * @param aNamespaceDef namespace
- */
- virtual void RemoveRelationsAsyncL(
- const RArray<TItemId>& aId, TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedRelationIds,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /* Methods for managing events. */
-
- /**
- * Constructs a new empty event. Note that the event is not inserted in the
- * database. The ownership of the new event is passed to the caller (that
- * is, the caller is responsible for deleting the event).
- *
- * Example:
- * CMdEEventDef* eventDef = &iDefaultNamespace->GetEventDefL( Events::KCreated );
- * CMdEEvent* event = iMdeSession->NewEventLC( *eventDef, objectId, time );
- *
- * @param aDef definition of the new event
- * @param aObjectId the target object id
- * @param aTime time of the event
- * @param aSource source of the event
- * @param aParticipant participant of the event
- *
- * @return new event
- */
- virtual CMdEEvent* NewEventLC(CMdEEventDef& aDef,
- TItemId aObjectId, TTime aTime,
- const TDesC* aSource = NULL, const TDesC* aParticipant = NULL) = 0;
-
- /**
- * Constructs a new empty event. Note that the event is not inserted in the
- * database. The ownership of the new event is passed to the caller (that
- * is, the caller is responsible for deleting the event).
- *
- * Example:
- * CMdEEventDef* eventDef = &iDefaultNamespace->GetEventDefL( Events::KCreated );
- * CMdEEvent* event = iMdeSession->NewEventL( *eventDef, objectId, time );
- *
- * @param aDef definition of the new event
- * @param aObjectId the target object id
- * @param aTime time of the event
- * @param aSource source of the event
- * @param aParticipant participant of the event
- *
- * @return new event
- */
- virtual CMdEEvent* NewEventL(CMdEEventDef& aDef,
- TItemId aObjectId, TTime aTime,
- const TDesC* aSource = NULL, const TDesC* aParticipant = NULL) = 0;
-
- /**
- * Returns the event with the specified identifier and specified namespace
- * (if namespace is NULL, the default namespace is used).
- * Note that the ownership of the returned event is passed to the caller of
- * the method (that is, the caller is responsible for deleting the event).
- *
- * @param aId Identifier.
- * @param aNamespaceDef namespace
- *
- * @return Event or NULL, if there is no event with the specified
- * identifier in the metadata engine database.
- */
- virtual CMdEEvent* GetEventL(TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Adds a new event to the metadata engine database.
- *
- * @param event
- *
- * @return Identifier of the new event.
- */
- virtual TItemId AddEventL( CMdEEvent& aEvent ) = 0;
-
- /**
- * Removes the event with the specified identifier and specified namespace
- * (if namespace is NULL, the default namespace is used) from the metadata
- * engine database.
- *
- * @param aId ID of the event to remove.
- * @param aNamespaceDef namespace
- *
- * @return event ID or KNoId, if there is no event with the specified ID
- * in the metadata engine database
- */
- virtual TItemId RemoveEventL( TItemId aId,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes multiple events with the specified IDs and specified
- * namespace (if namespace is NULL, the default namespace is used)
- * from the metadata engine database.
- *
- * @param aId IDs of events to remove.
- * @param aSuccessful Successfully removed IDs of events (if removing has
- * failed KNoId is added).
- * @param aNamespaceDef namespace
- */
- virtual TInt RemoveEventsL(
- const RArray<TItemId>& aId, RArray<TItemId>& aSuccessful,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes multiple events asynchronous with the specified IDs and
- * specified namespace (if namespace is NULL, the default namespace is
- * used) from the metadata engine database. Returned serialized list of
- * item IDs must be deserialized with DeserializeIdsL method.
- *
- * @param aId IDs of events to remove.
- * @param aStatus returns the result code after the asynchronous call
- * completes.
- * @param aSerializedEventIds returned serialized list of event IDs
- * @param aNamespaceDef namespace
- */
- virtual void RemoveEventsAsyncL(
- const RArray<TItemId>& aId, TRequestStatus& aStatus,
- RMdEDataBuffer& aSerializedEventIds,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
-
- /* Methods for searching objects, relations, and events. */
-
- /**
- * Creates a new object query.
- *
- * Note that the ownership of the returned query is passed to the caller of
- * the method (that is, the caller is responsible for deleting the query).
- *
- * @param aNamespaceDef namespace where query will be run
- * @param aObjectDef object definition which defines objects which will be
- * queried
- * @param aObserver observer which callback methods will be called
- *
- * @return New object query.
- */
- virtual CMdEObjectQuery* NewObjectQueryL(CMdENamespaceDef& aNamespaceDef,
- CMdEObjectDef& aObjectDef, MMdEQueryObserver* aObserver = 0) = 0;
-
- /**
- * Creates a new object query.
- *
- * Note that the ownership of the returned query is passed to the caller of
- * the method (that is, the caller is responsible for deleting the query).
- *
- * @param aObjectDef Object definition which defines the parent object.
- * @param aObjectDefs Object definitions which defines objects which will
- * be queried. Ownership of aObjectDefs will change to
- * query.
- * @param aObserver Observer which callback methods will be called.
- *
- * @return New object query.
- */
- virtual CMdEObjectQuery* NewObjectQueryL(
- CMdEObjectDef& aObjectDef,
- RPointerArray<CMdEObjectDef>* aObjectDefs,
- MMdEQueryObserver* aObserver = 0) = 0;
-
- /**
- * Creates a new relation query.
- *
- * Note that the ownership of the returned query is passed to the caller of
- * the method (that is, the caller is responsible for deleting the query).
- *
- * @param aNamespaceDef namespace where query will be run
- * @param aObserver observer which callback methods will be called
- *
- * @return New relation query.
- */
- virtual CMdERelationQuery* NewRelationQueryL(
- CMdENamespaceDef& aNamespaceDef,
- MMdEQueryObserver* aObserver = 0) = 0;
-
- /**
- * Creates a new event query.
- *
- * Note that the ownership of the returned query is passed to the caller of
- * the method (that is, the caller is responsible for deleting the query).
- *
- * @param aNamespaceDef namespace where query will be run
- * @param aObserver observer which callback methods will be called
- *
- * @return New event query.
- */
- virtual CMdEEventQuery* NewEventQueryL(CMdENamespaceDef& aNamespaceDef,
- MMdEQueryObserver* aObserver = 0) = 0;
-
-
- /* Methods for managing observers. */
-
- /**
- * Adds a new schema observer to the session. No duplicate
- * observers are allowed.
- *
- * @param aObserver observer
- */
- virtual void AddSchemaObserverL(MMdESchemaObserver& aObserver) = 0;
-
- /**
- * Removes the specified schema observer from the session.
- *
- * @param aObserver observer
- */
- virtual void RemoveSchemaObserverL(MMdESchemaObserver& aObserver) = 0;
-
- /**
- * Adds a new object observer to the session. No duplicate observers are
- * allowed.
- *
- * The following restrictions are placed on the condition nodes:
- * - Only CMdEObjectCondition and CMdEPropertyCondition nodes can be
- * used. CMdERangePropertyConditions are not allowed.
- * - No nested logic conditions are allowed.
- *
- * @param aObserver Observer.
- * @param aCondition Condition that the objects, about which the observer
- * wants to receive notifications, must fulfill or NULL,
- * to receive notifications of all objects.
- * Ownership of the condition is transferred to the
- * session.
- * @param aNotificationType what event type (add, modify, remove) should
- * be notified to client
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddObjectObserverL(MMdEObjectObserver& aObserver,
- CMdELogicCondition* aCondition = NULL,
- TUint32 aNotificationType = ENotifyAdd | ENotifyModify | ENotifyRemove,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Removes the specified object observer from the session.
- *
- * @param aObserver observer
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- */
- virtual void RemoveObjectObserverL(MMdEObjectObserver& aObserver,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Adds a new object present observer to the session. No duplicate
- * observers are allowed.
- *
- * @param aObserver Observer
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddObjectPresentObserverL(
- MMdEObjectPresentObserver& aObserver) = 0;
-
- /**
- * Removes the specified object present observer from the session.
- *
- * @param aObserver observer
- */
- virtual void RemoveObjectPresentObserverL(
- MMdEObjectPresentObserver& aObserver)= 0;
-
- /**
- * Adds a new relation observer to the session. No duplicate observers
- * are allowed.
- *
- * The following restrictions are placed on the condition nodes:
- * - Only CMdERelationCondition nodes are allowed.
- * - No nested logic conditions are allowed.
- *
- * @param aObserver Observer.
- * @param aCondition Condition that the relations, about which the observer
- * wants to receive notifications, must fulfill
- * or NULL, to receive notifications of all relations.
- * Ownership of the condition is transferred to the
- * session.
- * @param aNotificationType what event type (add, modify, remove) should
- * be notified to client
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddRelationObserverL(MMdERelationObserver& aObserver,
- CMdECondition* aCondition = NULL,
- TUint32 aNotificationType = ENotifyAdd | ENotifyModify | ENotifyRemove,
- CMdENamespaceDef* aNamespaceDef = NULL)= 0;
- /**
- * Removes the specified relation observer from the session.
- *
- * @param aObserver Observer.
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- */
- virtual void RemoveRelationObserverL(MMdERelationObserver& aObserver,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Adds a new relation item observer to the session.
- * No duplicate observers are allowed.
- *
- * The following restrictions are placed on the condition nodes:
- * - Only CMdERelationCondition nodes are allowed.
- * - No nested logic conditions are allowed.
- *
- * @param aObserver Observer.
- * @param aCondition Condition that the relations, about which the observer
- * wants to receive notifications, must fulfill
- * or NULL, to receive notifications of all relations.
- * Ownership of the condition is transferred to the
- * session.
- * @param aNotificationType what event type (add, modify, remove) should
- * be notified to client
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddRelationItemObserverL(MMdERelationItemObserver& aObserver,
- CMdECondition* aCondition = NULL,
- TUint32 aNotificationType = /*ENotifyAdd | ENotifyModify |*/ ENotifyRemove,
- CMdENamespaceDef* aNamespaceDef = NULL)= 0;
- /**
- * Removes the specified relation observer from the session.
- *
- * @param aObserver Observer.
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- */
- virtual void RemoveRelationItemObserverL(MMdERelationItemObserver& aObserver,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Adds a new realation present observer to the session. No duplicate observers are
- * allowed.
- *
- * @param aObserver Observer.
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddRelationPresentObserverL(
- MMdERelationPresentObserver& aObserver) = 0;
-
- /**
- * Removes the specified relation present observer from the session.
- *
- * @param aObserver observer
- */
- virtual void RemoveRelationPresentObserverL(
- MMdERelationPresentObserver& aObserver)= 0;
-
- /**
- * Adds a new event observer to the session. No duplicate observers
- * are allowed.
- *
- * The following restrictions are placed on the condition nodes:
- * - Only CMdEEventCondition nodes are allowed.
- * - No nested logic conditions are allowed.
- *
- * @param aObserver Observer.
- * @param aCondition Condition that the events, about which the observer
- * wants to receive notifications, must fulfill
- * or NULL, to receive notifications of all events.
- * @param aNotificationType what event type (add or remove) should
- * be notified to client
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddEventObserverL(MMdEEventObserver& aObserver,
- CMdECondition* aCondition = NULL,
- TUint32 aNotificationType = ENotifyAdd | ENotifyRemove,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
- /**
- * Removes the specified event observer from the session.
- *
- * @param aObserver Observer.
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- */
- virtual void RemoveEventObserverL(MMdEEventObserver& aObserver,
- CMdENamespaceDef* aNamespaceDef = NULL) = 0;
-
-
- /* Methods for import/export */
-
- /**
- * Imports schemadata from file to default database.
- *
- * @param aFileName filename where the schemadata to import is.
- */
- virtual void ImportSchemaL( const TDesC& aFileName ) = 0;
-
- /**
- * Imports metadata from file to default database.
- *
- * @param aFileName filename where the metadata to import is.
- * @return The number of failed imports
- */
- virtual TInt ImportMetadataL( const TDesC& aFileName ) = 0;
-
- /**
- * Imports metadata asynchronously from file to default database.
- *
- * @param aFileName Filename where the metadata to import is.
- * @param aResult The number of failed imports and possible error code.
- * @param aStatus Returned status of method call.
- */
- virtual void ImportMetadata( const TDesC& aFileName,
- TPckgBuf<TInt>& aResult, TRequestStatus& aStatus ) = 0;
-
- /**
- * Exports metadata to file.
- *
- * @param aFileName filename where the metadata is to be exported.
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used), ownership doesn't
- * change
- * @param aObjectDefs object types to export (if NULL all objects are
- * exported), ownership doesn't change
- * @param aRelationDefs relation types to export (if NULL all relations
- * are exported), ownership doesn't change
- * @param aEventDefs event types to export (if NULL all events are
- * exported), ownership doesn't change
- */
- virtual void ExportMetadataL( const TDesC& aFileName,
- const CMdENamespaceDef* aNamespaceDef = NULL,
- const RPointerArray<CMdEObjectDef>* aObjectDefs = NULL,
- const RPointerArray<CMdERelationDef>* aRelationDefs = NULL,
- const RPointerArray<CMdEEventDef>* aEventDefs = NULL ) = 0;
-
- /**
- * Exports metadata asynchronously to file.
- *
- * @param aFileName Filename where the metadata is to be exported.
- * @param aStatus Returns the result code after the asynchronous call
- * completes.
- * @param aBuffer Serialized buffer of export types, must be valid until
- * aStatus is completed and can be closed after that.
- * @param aNamespaceDef Specified namespace (if namespace is NULL, the
- * default namespace is used), ownership doesn't
- * change.
- * @param aObjectDefs Object types to export (if NULL all objects are
- * exported), ownership doesn't change.
- * @param aRelationDefs Relation types to export (if NULL all relations
- * are exported), ownership doesn't change.
- * @param aEventDefs Event types to export (if NULL all events are
- * exported), ownership doesn't change.
- */
- virtual void ExportMetadataL( const TDesC& aFileName,
- TRequestStatus& aStatus, RMdEDataBuffer& aBuffer,
- const CMdENamespaceDef* aNamespaceDef = NULL,
- const RPointerArray<CMdEObjectDef>* aObjectDefs = NULL,
- const RPointerArray<CMdERelationDef>* aRelationDefs = NULL,
- const RPointerArray<CMdEEventDef>* aEventDefs = NULL ) = 0;
- /**
- * Load whole schema from server side.
- */
- virtual void LoadSchemaL() = 0;
-
- /**
- * Get engine session reference.
- */
- virtual RMdEEngineSession& EngineSession() = 0;
-
- /**
- * Get schema version's major and minor version.
- *
- * @param aMajorVersion returned major version
- * @param aMinorVersion returned minor version
- */
- virtual void GetSchemaVersionL(
- TInt& aMajorVersion, TInt& aMinorVersion) = 0;
-
- /**
- * Set object to "present" state by GUID.
- *
- * @param aGuidHigh Guid's high part
- * @param aGuidLow Guid's low part
- *
- * @leave KErrNotFound MdE can't find object in "not present" state
- * with matching GUID
- */
- virtual void SetObjectToPresentByGuidL(
- const TInt64& aGuidHigh, const TInt64& aGuidLow ) = 0;
-
- /**
- * Adds a new object observer to the session. No duplicate observers are
- * allowed.
- *
- * The following restrictions are placed on the condition nodes:
- * - Only CMdEObjectCondition and CMdEPropertyCondition nodes can be
- * used. CMdERangePropertyConditions are not allowed.
- * - No nested logic conditions are allowed.
- *
- * Be adviced, this version with the URI in the callback is much less
- * efficient than using version without the URI
- *
- * @param aObserver Observer.
- * @param aCondition Condition that the objects, about which the observer
- * wants to receive notifications, must fulfill or NULL,
- * to receive notifications of all objects.
- * Ownership of the condition is transferred to the
- * session.
- * @param aNotificationType what event type (add, modify, remove) should
- * be notified to client
- * @param aNamespaceDef specified namespace (if namespace is NULL, the
- * default namespace is used)
- * @param aUriRequired determines if uri is required in the callback
- *
- * @leave KErrAlreadyExists if the same observer has already been added
- */
- virtual void AddObjectObserverWithUriL( MMdEObjectObserverWithUri& aObserver,
- CMdELogicCondition* aCondition = NULL,
- TUint32 aNotificationType = ENotifyAdd | ENotifyModify | ENotifyRemove,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
- /**
- * Removes the specified object observer from the session.
- *
- * @param aObserver observer
- */
- virtual void RemoveObjectObserverWithUriL( MMdEObjectObserverWithUri& aObserver,
- CMdENamespaceDef* aNamespaceDef = NULL ) = 0;
-
-protected:
-
- /* Constructors. */
-
- /**
- * Constructor.
- */
- CMdESession();
-
- /**
- * Second-phase constructor.
- */
- void SessionConstruct();
- };
-
-// includes only for client more convinient usage
-#include <mdeitem.h>
-#include <mdenamespacedef.h>
-#include <mdepropertydef.h>
-#include <mdeobjectdef.h>
-#include <mderelationdef.h>
-#include <mdeeventdef.h>
-#include <mdeproperty.h>
-#include <mdeobject.h>
-#include <mderelation.h>
-#include <mdeevent.h>
-#include <mdedatabuffer.h>
-
-#endif // __MDESESSION_H__