--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/omads/omadsextensions/adapters/bookmark/inc/bookmarkdatastore.h Mon Nov 23 14:46:41 2009 +0200
@@ -0,0 +1,205 @@
+/*
+* 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: Part of SyncML Data Synchronization Plug In Adapter
+*
+*/
+
+
+#ifndef __BOOKMARKDATASTORE_H__
+#define __BOOKMARKDATASTORE_H__
+
+#include <SmlDataProvider.h>
+#include <FavouritesDb.h>
+#include <nsmlchangefinder.h>
+
+#include <FeedsServerClient.h>
+#include <FeedsServerFolderItem.h>
+
+class CNSmlDataItemUidSet;
+class CFavouritesItem;
+class CBookmarkConversionUtil;
+class RFeedsServer;
+class CChangeFinder;
+class TSnapshotItem;
+
+class CBookmarkDataStore : public CSmlDataStore,
+ public MFolderItemObserver,
+ public MFeedsServerObserver
+ {
+private:
+
+ CBookmarkDataStore();
+ ~CBookmarkDataStore();
+
+public:
+
+ static CBookmarkDataStore* NewL();
+ static CBookmarkDataStore* NewLC();
+ void ConstructL();
+
+ // Transactions (optional)
+ void DoBeginTransactionL();
+ void DoCommitTransactionL(TRequestStatus& aStatus);
+ void DoRevertTransaction(TRequestStatus& aStatus);
+
+ // Batching (optional)
+ void DoBeginBatchL();
+ void DoCommitBatchL(RArray<TInt>& aResultArray, TRequestStatus& aStatus);
+ void DoCancelBatch();
+
+ // Opens data store asynchronously
+ void DoOpenL(const TDesC& aStoreName, MSmlSyncRelationship& aContext, TRequestStatus& aStatus);
+ // Cancels current asynchronous request
+ void DoCancelRequest();
+ // Returns the name of open database, empty if OpenL hasn't been called
+ const TDesC& DoStoreName() const;
+ // Sets remote server data format
+ void DoSetRemoteStoreFormatL(const CSmlDataStoreFormat& aServerDataStoreFormat);
+ // Sets the remote server maximum object size
+ void DoSetRemoteMaxObjectSize(TInt aServerMaxObjectSize);
+ // Returns maximum object size, reported by remote server
+ TInt DoMaxObjectSize() const;
+
+ // Opens item for reading
+ void DoOpenItemL(TSmlDbItemUid aUid, TBool& aFieldChange, TInt& aSize,
+ TSmlDbItemUid& aParent, TDes8& aMimeType, TDes8& aMimeVer, TRequestStatus& aStatus);
+ // Initializes new item to data store
+ void DoCreateItemL(TSmlDbItemUid& aUid, TInt aSize, TSmlDbItemUid aParent,
+ const TDesC8& aMimeType, const TDesC8& aMimeVer, TRequestStatus& aStatus);
+ // Initializes replace of item in data store
+ void DoReplaceItemL(TSmlDbItemUid aUid, TInt aSize, TSmlDbItemUid aParent,
+ TBool aFieldChange, TRequestStatus& aStatus);
+ // Reads data from opened item
+ void DoReadItemL(TDes8& aBuffer);
+ // Writes data to created or replaced item
+ void DoWriteItemL(const TDesC8& aData);
+ // Commits the created or replaced item to database
+ void DoCommitItemL(TRequestStatus& aStatus);
+ // Closes the opened item
+ void DoCloseItem();
+ // Moves item in the database
+ void DoMoveItemL(TSmlDbItemUid aUid, TSmlDbItemUid aNewParent, TRequestStatus& aStatus);
+ // Deletes item from the database
+ void DoDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
+ // Soft deletes item (if supported by plugin adapter), can be equal to DoDeleteItemL
+ void DoSoftDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
+ // Deletes all items from the database
+ void DoDeleteAllItemsL(TRequestStatus& aStatus);
+
+ // Returns, whether data store has history info. EFalse means slow sync
+ TBool DoHasSyncHistory() const;
+ // Returns ids of items, which are added after previous synchronization
+ const MSmlDataItemUidSet& DoAddedItems() const;
+ // Returns ids of items, which are deleted after previous synchronization
+ const MSmlDataItemUidSet& DoDeletedItems() const;
+ // Returns ids of items, which are soft-deleted after previous synchronization
+ const MSmlDataItemUidSet& DoSoftDeletedItems() const;
+ // Returns ids of items, which are modified after previous synchronization
+ const MSmlDataItemUidSet& DoModifiedItems() const;
+ // Returns ids of items, which are moved after previous synchronization
+ const MSmlDataItemUidSet& DoMovedItems() const;
+ // Resets change information of items (makes all items new from DS point of view)
+ void DoResetChangeInfoL(TRequestStatus& aStatus);
+ // Commits the changes, that are sent into the remote server
+ void DoCommitChangeInfoL(TRequestStatus& aStatus, const MSmlDataItemUidSet& aItems);
+ // Commits the changes, that are sent into the remote server
+ void DoCommitChangeInfoL(TRequestStatus& aStatus);
+
+private: // From MFolderItemObserver
+ void FolderItemRequestCompleted(TInt aStatus, CRequestHandler::TRequestHandlerType);
+ void FolderItemChanged() {};
+private: // From MFeedsServerObserver
+ void UpdateAllProgress(TInt, TInt ) {};
+ void SettingsChanged( TInt ) {};
+private: // From MConnectionObserver
+ virtual void NetworkConnectionNeededL(TInt* /*aConnectionPtr*/, TInt& /*aSockSvrHandle*/,
+ TBool& /*aNewConn*/, TApBearerType& /*aBearerType*/){};
+private:
+ void DoFolderItemRequestCompletedL( TInt aStatus );
+ void CreateRssItemL( TInt aRssParentUid, const TDesC& aName, const TDesC& aUrl, TBool aIsFolder );
+ void ReplaceRssItemL( TInt aRssItemUid, const TDesC& aNewName, const TDesC& aNewUrl );
+ void RssItemCreatedL();
+ void RssItemReplacedL( TBool& aMoveNeeded );
+ void RegisterSnapshotL();
+ void RegisterToSnapshotL( CArrayFixSeg<TSnapshotItem>* aSnapshot, TInt aFolderUid );
+ void RegisterRssFeedsToSnapshotL( CArrayFixSeg<TSnapshotItem>* aSnapshot,
+ const CFolderItem& folder );
+ void AssignString( TDes8& aDestination, const TDesC8& aSource );
+
+ // Data store states
+ enum TState
+ {
+ EClosed = 0,
+ EOpenAndWaiting,
+ EBookmarkOpen,
+ EBookmarkCreating,
+ EBookmarkUpdating,
+ EBookmarkUpdatedAndMoving,
+ EBookmarkMoving,
+ EBookmarkDeleting,
+ EBookmarkDeletingAll
+ };
+
+ TState iCurrentState;
+
+ RFs iRfs;
+ RFavouritesSession iSession;
+ RFavouritesDb iDb;
+ TBool iDataBaseOpened;
+
+ RFeedsServer iFeedsServer;
+ RFolderItem iRootFolder;
+
+ TRequestStatus* iCallerStatus;
+
+ /**
+ * Key that is used in sorting snapshot.
+ */
+ const TKeyArrayFix iKey;
+
+ /**
+ * Change finder, used to determine db modifications.
+ */
+ CChangeFinder* iChangeFinder;
+
+ /**
+ * Bookmark item converter, used to convert xml and vBookmark data.
+ */
+ CBookmarkConversionUtil* iConverter;
+
+ TInt* iCurrentItem;
+ TInt iReplaceItem;
+ TSnapshotItem* iMovedItem;
+
+ CBufFlat* iDataBuffer;
+ TInt iWriterPosition;
+ TInt iReaderPosition;
+
+ TBool iHasHistory;
+
+ CNSmlDataItemUidSet* iNewItems;
+ CNSmlDataItemUidSet* iDeletedItems;
+ CNSmlDataItemUidSet* iSoftDeletedItems;
+ CNSmlDataItemUidSet* iUpdatedItems;
+ CNSmlDataItemUidSet* iMovedItems;
+
+ CFavouritesItem::TType iMimeType;
+ TInt iParentFolder;
+ TFileName iNewItemName;
+
+ CFavouritesItem* iItemToBeReplaced;
+
+ };
+
+#endif