--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omads/omadsextensions/adapters/mediads/inc/mediadsstore.h Tue Jul 13 03:39:25 2010 +0530
@@ -0,0 +1,258 @@
+/*
+* 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: Part of SyncML Data Synchronization Plug In Adapter
+*
+*/
+
+
+
+#ifndef __MEDIADATASTORE_H__
+#define __MEDIADATASTORE_H__
+
+// INCLUDES
+#include <smldataprovider.h>
+#include <mpxcollectionobserver.h>
+
+#include "mediadsproviderdefs.h"
+#include "changefinder.h"
+#include "mediamanager.h"
+#include "cmdemanager.h"
+
+// FORWARD DECLARATIONS
+class CNSmlDataItemUidSet;
+class MMPXHarvesterUtility;
+class MMPXCollectionUtility;
+class CMPXCollectionMediator;
+
+
+/**
+* @brief This class is derived from ECom Data Store plugin-interface (CSmlDataStore).
+* It performs the actual synchronization commands, which are received from
+* the DS engine.
+*/
+class CMediaDsDataStore : public CSmlDataStore,
+ public MMediaManagerObserver,
+ public MMdEManagerObserver
+ {
+public:
+
+ /**
+ * Constructor
+ *
+ * @return CMediaDsDataStore* instance.
+ */
+ static CMediaDsDataStore* NewLC( RFs& aFs );
+
+ /**
+ * Destructor
+ */
+ virtual ~CMediaDsDataStore();
+
+protected:
+
+ // Virtual functionality from CSmlDataStore, for comments see the CSmlDataStore header file
+ virtual void DoOpenL(const TDesC& aStoreName, MSmlSyncRelationship& aContext, TRequestStatus& aStatus);
+ virtual void DoCancelRequest();
+ virtual const TDesC& DoStoreName() const;
+ virtual void DoBeginTransactionL();
+ virtual void DoCommitTransactionL(TRequestStatus& aStatus);
+ virtual void DoRevertTransaction(TRequestStatus& aStatus);
+ virtual void DoBeginBatchL();
+ virtual void DoCommitBatchL(RArray<TInt>& aResultArray, TRequestStatus& aStatus);
+ virtual void DoCancelBatch();
+ virtual void DoSetRemoteStoreFormatL(const CSmlDataStoreFormat& aServerDataStoreFormat);
+ virtual void DoSetRemoteMaxObjectSize(TInt aServerMaxObjectSize);
+ virtual TInt DoMaxObjectSize() const;
+ virtual void DoOpenItemL(TSmlDbItemUid aUid, TBool& aFieldChange, TInt& aSize,
+ TSmlDbItemUid& aParent, TDes8& aMimeType, TDes8& aMimeVer, TRequestStatus& aStatus);
+ virtual void DoCreateItemL(TSmlDbItemUid& aUid, TInt aSize, TSmlDbItemUid aParent,
+ const TDesC8& aMimeType, const TDesC8& aMimeVer, TRequestStatus& aStatus);
+ virtual void DoReplaceItemL(TSmlDbItemUid aUid, TInt aSize, TSmlDbItemUid aParent,
+ TBool aFieldChange, TRequestStatus& aStatus);
+ virtual void DoReadItemL(TDes8& aBuffer);
+ virtual void DoWriteItemL(const TDesC8& aData);
+ virtual void DoCommitItemL(TRequestStatus& aStatus);
+ virtual void DoCloseItem();
+ virtual void DoMoveItemL(TSmlDbItemUid aUid, TSmlDbItemUid aNewParent, TRequestStatus& aStatus);
+ virtual void DoDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
+ virtual void DoSoftDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
+ virtual void DoDeleteAllItemsL(TRequestStatus& aStatus);
+ virtual TBool DoHasSyncHistory() const;
+ virtual const MSmlDataItemUidSet& DoAddedItems() const;
+ virtual const MSmlDataItemUidSet& DoDeletedItems() const;
+ virtual const MSmlDataItemUidSet& DoSoftDeletedItems() const;
+ virtual const MSmlDataItemUidSet& DoModifiedItems() const;
+ virtual const MSmlDataItemUidSet& DoMovedItems() const;
+ virtual void DoResetChangeInfoL(TRequestStatus& aStatus);
+ virtual void DoCommitChangeInfoL(TRequestStatus& aStatus, const MSmlDataItemUidSet& aItems);
+ virtual void DoCommitChangeInfoL(TRequestStatus& aStatus);
+
+protected: // from MMPXCollectionObserver
+ void HandleCollectionMessage(CMPXMessage* aMsg, TInt /*aErr*/) ;
+ void HandleOpenL(const CMPXMedia& aEntries,
+ TInt aIndex,TBool aComplete,TInt aError);
+ void HandleOpenL(const CMPXCollectionPlaylist& aPlaylist,TInt aError);
+ void HandleCommandComplete(CMPXCommand* /*aCommandResult*/,
+ TInt /*aError*/);
+ void HandleCollectionMediaL(const CMPXMedia& aMedia,
+ TInt aError);
+ // from MMediaManagerObserver
+ void RegisterAllPlayListsCompleted( TInt aError );
+ void RegisterAllSongsCompleted( TInt aError );
+
+protected: // from MMdEManagerObserver
+ void AlbumsReaded( TInt aError );
+ void AlbumReplaced( TInt aError );
+
+private:
+
+ /**
+ * C++ Constructor.
+ */
+ CMediaDsDataStore( RFs& aFs );
+
+ /**
+ * 2nd-phase Constructor.
+ *
+ * @param aMsvSession IN: a session handle to message store
+ */
+ void ConstructL();
+
+ /**
+ * Registers snapshot to ChangeFinder.
+ */
+ void RegisterSnapshotL();
+
+ void RegisterFoldersL( CSnapshotArray& aItemArray );
+
+ void FinalizeOpenStore();
+
+ inline TInt MapSyncIdToAlbumId( TSmlDbItemUid aSyncId );
+ inline TSmlDbItemUid MapAlbumIdToSyncId( TInt aAlbumId );
+
+private: // Data members
+
+
+ enum TState
+ {
+ EClosed = 0,
+ EOpening,
+ EOpenAndWaiting,
+ EReplace,
+ ECreatePlaylist
+ };
+
+ /**
+ * The state of the plugin.
+ */
+ TState iCurrentState;
+
+ /**
+ * A flag indicating the existence of synchronization history.
+ */
+ TBool iHasHistory;
+
+ /**
+ * Key that is used in sorting snapshot.
+ */
+ const TKeyArrayFix iKey;
+
+ /**
+ * Change finder, used to determine db modifications.
+ */
+ CChangeFinder* iChangeFinder;
+
+ /**
+ * The location for temporary data
+ */
+ CBufFlat* iDataBuffer;
+
+ /**
+ * Current read position at the data chunk from MMS engine
+ */
+ TInt iReadPosition;
+
+ /**
+ * Indicates wheter this was only status update
+ */
+ TInt iWrittenDataLength;
+
+ /**
+ * Stores the currently active message id.
+ */
+ TSmlDbItemUid iCurrentId;
+
+ /**
+ * Pointer to the variable, receiving the created Uid.
+ */
+ TSmlDbItemUid* iCreatedUid;
+
+ /**
+ * Stores the parent id of currently active message.
+ */
+ TSmlDbItemUid iParentId;
+
+ /**
+ * Used to get asynchronous return values.
+ */
+ TRequestStatus* iCallerStatus;
+
+ /**
+ * Used to store new items.
+ */
+ CNSmlDataItemUidSet* iNewItems;
+
+ /**
+ * Used to store deleted items.
+ */
+ CNSmlDataItemUidSet* iDeletedItems;
+
+ /**
+ * Used to store updated items.
+ */
+ CNSmlDataItemUidSet* iUpdatedItems;
+
+ /**
+ * Used to store moved items.
+ */
+ CNSmlDataItemUidSet* iMovedItems;
+
+ /**
+ * Used to store soft-deleted items (not supported).
+ */
+ CNSmlDataItemUidSet* iSoftDeletedItems;
+
+ /**
+ * Used to manage playlists and songs.
+ */
+ CMediaManager* iMediaManager;
+ TBool iMediaManagerReady;
+
+ /**
+ * Used to manage photo albums.
+ */
+ CMdEManager* iMdEManager;
+ TBool iMdEManagerReady;
+
+ TInt iError;
+
+ CMD5* iHasher;
+
+ RFs& iFs;
+
+ CSnapshotArray* iSnapshot;
+ TSnapshotItem iItemInReplacement;
+ };
+
+#endif // __MEDIADATASTORE_H__