contentctrl_plat/ds_contact_adapter_customization_api/tsrc/DummyAdapter/inc/nsmldummydatastore.h
author hgs
Fri, 20 Aug 2010 09:35:25 +0530
changeset 50 00439341df81
permissions -rw-r--r--
201033
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
50
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  DS Dummy datastore
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#ifndef CNSMLDUMMYDATASTORE_H
hgs
parents:
diff changeset
    19
#define CNSMLDUMMYDATASTORE_H
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
//  EXTERNAL INCLUDES
hgs
parents:
diff changeset
    22
#include <nsmlcontactsdatastore.h>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
// Device Info resource filenames
hgs
parents:
diff changeset
    25
_LIT( KNSmlDummyContactsStoreFormatRsc_1_1_2, "NSmlDummyDataStoreFormat_1_1_2.rsc" );
hgs
parents:
diff changeset
    26
_LIT( KNSmlDummyContactsStoreFormatRsc_1_2, "NSmlDummyDataStoreFormat_1_2.rsc" );
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
//  CLASS DEFINITION
hgs
parents:
diff changeset
    29
/**
hgs
parents:
diff changeset
    30
 * Datastore class for Dummy adapters
hgs
parents:
diff changeset
    31
 * @lib nsmldummydataprovider.lib
hgs
parents:
diff changeset
    32
 * @since 3.23
hgs
parents:
diff changeset
    33
 */
hgs
parents:
diff changeset
    34
class CNSmlDummyDataStore : public CNSmlContactsDataStore
hgs
parents:
diff changeset
    35
    {
hgs
parents:
diff changeset
    36
    private:    // Friend class definitions (for unit test purposes)
hgs
parents:
diff changeset
    37
        friend class CNSmlDummyDataStore_Test;
hgs
parents:
diff changeset
    38
        friend class CNSmlDummyDataStoreWaiter;
hgs
parents:
diff changeset
    39
        
hgs
parents:
diff changeset
    40
    public:     // Constructors and destructor
hgs
parents:
diff changeset
    41
hgs
parents:
diff changeset
    42
        static CNSmlDummyDataStore* NewL();
hgs
parents:
diff changeset
    43
        static CNSmlDummyDataStore* NewLC();
hgs
parents:
diff changeset
    44
        ~CNSmlDummyDataStore();
hgs
parents:
diff changeset
    45
hgs
parents:
diff changeset
    46
    protected:    // Constructors
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
        CNSmlDummyDataStore();
hgs
parents:
diff changeset
    49
        void ConstructL();
hgs
parents:
diff changeset
    50
hgs
parents:
diff changeset
    51
    protected:  // From CNSmlContactsDataStore
hgs
parents:
diff changeset
    52
hgs
parents:
diff changeset
    53
        /**
hgs
parents:
diff changeset
    54
         * Opens datastore for read/write access. Store to open is specified 
hgs
parents:
diff changeset
    55
         * by datastore name aStoreName and syncronisation relationship 
hgs
parents:
diff changeset
    56
         * aContext. Command status is returned in aStatus. Internal state 
hgs
parents:
diff changeset
    57
         * of this class instance is set to ENSmlOpenAndWaiting and was 
hgs
parents:
diff changeset
    58
         * expected to be ENSmlClosed before calling this method, otherwise 
hgs
parents:
diff changeset
    59
         * KErrInUse error is returned.
hgs
parents:
diff changeset
    60
         */
hgs
parents:
diff changeset
    61
        void DoOpenL( const TDesC& aStoreName, MSmlSyncRelationship& aContext,
hgs
parents:
diff changeset
    62
            TRequestStatus& aStatus);
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
        /**
hgs
parents:
diff changeset
    65
         * Cancels the current asynchronous request (including OpenL()-method.)
hgs
parents:
diff changeset
    66
         */
hgs
parents:
diff changeset
    67
        void DoCancelRequest();
hgs
parents:
diff changeset
    68
hgs
parents:
diff changeset
    69
        /**
hgs
parents:
diff changeset
    70
         * Returns the name of the currently opened datastore.
hgs
parents:
diff changeset
    71
         */
hgs
parents:
diff changeset
    72
        const TDesC& DoStoreName() const;
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
        /**
hgs
parents:
diff changeset
    75
         * Not supported currently (Starts the transaction.)
hgs
parents:
diff changeset
    76
         */
hgs
parents:
diff changeset
    77
        void DoBeginTransactionL();
hgs
parents:
diff changeset
    78
hgs
parents:
diff changeset
    79
        /**
hgs
parents:
diff changeset
    80
         * Not supported currently
hgs
parents:
diff changeset
    81
         * 
hgs
parents:
diff changeset
    82
         * (After executing operations for data items and no errors has 
hgs
parents:
diff changeset
    83
         * occurred CommitTransactionL() is called. aStatus is a return 
hgs
parents:
diff changeset
    84
         * status for CommitTransactionL()method.) 
hgs
parents:
diff changeset
    85
         */
hgs
parents:
diff changeset
    86
        void DoCommitTransactionL( TRequestStatus& aStatus );
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
        /**
hgs
parents:
diff changeset
    89
         * Not supported currently
hgs
parents:
diff changeset
    90
         *  
hgs
parents:
diff changeset
    91
         * (If an execution of an operation for a dataitem fails during 
hgs
parents:
diff changeset
    92
         * transaction then RevertTransactionL() is called. aStatus is 
hgs
parents:
diff changeset
    93
         * a return status for RevertTransactionL()method. )
hgs
parents:
diff changeset
    94
         */
hgs
parents:
diff changeset
    95
        void DoRevertTransaction( TRequestStatus& aStatus );
hgs
parents:
diff changeset
    96
hgs
parents:
diff changeset
    97
        /**
hgs
parents:
diff changeset
    98
         * Starts the batch. During this mode calls to CreateItemL(), 
hgs
parents:
diff changeset
    99
         * ReplaceItemL(), WriteItemL(), CommitItemL(), MoveItemL(), 
hgs
parents:
diff changeset
   100
         * DeleteItemL() and SoftDeleteItemL() will be buffered until 
hgs
parents:
diff changeset
   101
         * DoCommitBatchL().
hgs
parents:
diff changeset
   102
         */
hgs
parents:
diff changeset
   103
        void DoBeginBatchL();
hgs
parents:
diff changeset
   104
hgs
parents:
diff changeset
   105
        /**
hgs
parents:
diff changeset
   106
         * Executes all batched commands. Results for items are returned 
hgs
parents:
diff changeset
   107
         * in array structure aResultArray and status for CommitBatchL 
hgs
parents:
diff changeset
   108
         * is returned in aStatus.
hgs
parents:
diff changeset
   109
         */
hgs
parents:
diff changeset
   110
        void DoCommitBatchL( RArray< TInt >& aResultArray,
hgs
parents:
diff changeset
   111
            TRequestStatus& aStatus );
hgs
parents:
diff changeset
   112
hgs
parents:
diff changeset
   113
        /**
hgs
parents:
diff changeset
   114
         * Cancels the ongoing batch command buffering and frees all 
hgs
parents:
diff changeset
   115
         * buffered commands.
hgs
parents:
diff changeset
   116
         */
hgs
parents:
diff changeset
   117
        void DoCancelBatch();
hgs
parents:
diff changeset
   118
hgs
parents:
diff changeset
   119
        /**
hgs
parents:
diff changeset
   120
         * Sets the datastore format according aServerDataStoreFormat 
hgs
parents:
diff changeset
   121
         * structure. This is used in stripping and merging.
hgs
parents:
diff changeset
   122
         */
hgs
parents:
diff changeset
   123
        void DoSetRemoteStoreFormatL(
hgs
parents:
diff changeset
   124
            const CSmlDataStoreFormat& aServerDataStoreFormat );
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
        /**
hgs
parents:
diff changeset
   127
         * Sets the SyncML Remote Server maximum object size. This size 
hgs
parents:
diff changeset
   128
         * is used to check that only smaller items than maximum object 
hgs
parents:
diff changeset
   129
         * size are sent to SyncML Remote Server. 
hgs
parents:
diff changeset
   130
         */
hgs
parents:
diff changeset
   131
        void DoSetRemoteMaxObjectSize( TInt aServerMaxObjectSize );
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
        /**
hgs
parents:
diff changeset
   134
         * Returns the maximum object size of data provider. Size is read 
hgs
parents:
diff changeset
   135
         * from resources if they are already opened otherwise default 
hgs
parents:
diff changeset
   136
         * value KNSmlDataStoreMaxSize is returned.
hgs
parents:
diff changeset
   137
         */
hgs
parents:
diff changeset
   138
        TInt DoMaxObjectSize() const;
hgs
parents:
diff changeset
   139
hgs
parents:
diff changeset
   140
        /**        
hgs
parents:
diff changeset
   141
         * Indicates that SyncML Remote Server is going to read item with 
hgs
parents:
diff changeset
   142
         * ReadItemL() method. Input value aUid indicates item id to open, 
hgs
parents:
diff changeset
   143
         * references returned aFieldChange, aSize, aParent, aMimeType, 
hgs
parents:
diff changeset
   144
         * aMimeVer and aStatus indicates if fieldchange is possible, 
hgs
parents:
diff changeset
   145
         * parent uid, item’s mimetype, item’s mimeversion and status of 
hgs
parents:
diff changeset
   146
         * this commands execution respectively. aFieldChange is not currently
hgs
parents:
diff changeset
   147
         * supported. Internal state of this class instance is set to 
hgs
parents:
diff changeset
   148
         * ENSmlItemOpen and was expected to be ENSmlOpenAndWaiting before 
hgs
parents:
diff changeset
   149
         * calling this method, otherwise KErrNotReady error is returned. 
hgs
parents:
diff changeset
   150
         */
hgs
parents:
diff changeset
   151
        void DoOpenItemL( TSmlDbItemUid aUid, TBool& aFieldChange, 
hgs
parents:
diff changeset
   152
            TInt& aSize, TSmlDbItemUid& aParent, TDes8& aMimeType,
hgs
parents:
diff changeset
   153
            TDes8& aMimeVer, TRequestStatus& aStatus );
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
        /**
hgs
parents:
diff changeset
   156
         * Indicates that SyncML Remote Server is going to create item with 
hgs
parents:
diff changeset
   157
         * WriteItemL() method. Input values aSize, aParent, aMimeType and 
hgs
parents:
diff changeset
   158
         * aMimeVer indicates item size that is to be created, parent’s uid, 
hgs
parents:
diff changeset
   159
         * item’s mimetype and item’s mimeversion respectively. Status of 
hgs
parents:
diff changeset
   160
         * this commands execution is returned in reference aStatus and 
hgs
parents:
diff changeset
   161
         * item’s uid that is created is returned in aUid. Internal state 
hgs
parents:
diff changeset
   162
         * of this class instance is set to ENSmlItemCreating and was expected 
hgs
parents:
diff changeset
   163
         * to be ENSmlOpenAndWaiting before calling this method, otherwise 
hgs
parents:
diff changeset
   164
         * KErrNotReady error is returned. 
hgs
parents:
diff changeset
   165
         */
hgs
parents:
diff changeset
   166
        void DoCreateItemL( TSmlDbItemUid& aUid, TInt aSize,
hgs
parents:
diff changeset
   167
            TSmlDbItemUid aParent, const TDesC8& aMimeType, 
hgs
parents:
diff changeset
   168
            const TDesC8& aMimeVer, TRequestStatus& aStatus );
hgs
parents:
diff changeset
   169
hgs
parents:
diff changeset
   170
        /**
hgs
parents:
diff changeset
   171
         * Indicates that SyncPartner is going to replace item’s data with 
hgs
parents:
diff changeset
   172
         * WriteItemL() method. Input values aUid, aSize, aParent and 
hgs
parents:
diff changeset
   173
         * aFieldChange indicates item’s id, size, parent’s uid that is to 
hgs
parents:
diff changeset
   174
         * be replaced and if replace is field change respectively. Status 
hgs
parents:
diff changeset
   175
         * of this commands execution is returned in reference aStatus. 
hgs
parents:
diff changeset
   176
         * Internal state of this class instance is set to ENSmlItemUpdating 
hgs
parents:
diff changeset
   177
         * and was expected to be ENSmlOpenAndWaiting before calling this 
hgs
parents:
diff changeset
   178
         * method, otherwise KErrNotReady error is returned.
hgs
parents:
diff changeset
   179
         */
hgs
parents:
diff changeset
   180
        void DoReplaceItemL( TSmlDbItemUid aUid, TInt aSize,
hgs
parents:
diff changeset
   181
            TSmlDbItemUid aParent, TBool aFieldChange, 
hgs
parents:
diff changeset
   182
            TRequestStatus& aStatus );
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
        /**
hgs
parents:
diff changeset
   185
         * Reads data from item at Data Store. Item must be opened with 
hgs
parents:
diff changeset
   186
         * DoOpenItemL() method before calling this method. Internal state 
hgs
parents:
diff changeset
   187
         * of this class instance is expected to be ENSmlItemOpen before 
hgs
parents:
diff changeset
   188
         * calling this method, otherwise KErrNotReady error is returned. 
hgs
parents:
diff changeset
   189
         * This method leaves with KErrEof when item is completely read.
hgs
parents:
diff changeset
   190
         */
hgs
parents:
diff changeset
   191
        void DoReadItemL( TDes8& aBuffer );
hgs
parents:
diff changeset
   192
hgs
parents:
diff changeset
   193
        /**
hgs
parents:
diff changeset
   194
         * DoCreateItemL() or DoReplaceItemL() method must be called before 
hgs
parents:
diff changeset
   195
         * this method can be called. This method is called until all data 
hgs
parents:
diff changeset
   196
         * to current item is written. Internal state of this class instance 
hgs
parents:
diff changeset
   197
         * is expected to be ENSmlItemCreating or ENSmlItemUpdating before 
hgs
parents:
diff changeset
   198
         * calling this method, otherwise KErrNotReady error is returned.
hgs
parents:
diff changeset
   199
         */
hgs
parents:
diff changeset
   200
        void DoWriteItemL( const TDesC8& aData );
hgs
parents:
diff changeset
   201
hgs
parents:
diff changeset
   202
        /**
hgs
parents:
diff changeset
   203
         * Commits item changes to Contacts database. This method updates 
hgs
parents:
diff changeset
   204
         * Contacts database through contacts model method ImportContactsL 
hgs
parents:
diff changeset
   205
         * to update or to create item respectively. Internal state of this 
hgs
parents:
diff changeset
   206
         * class instance is expected to be ENSmlItemCreating or 
hgs
parents:
diff changeset
   207
         * ENSmlItemUpdating before calling this method, otherwise 
hgs
parents:
diff changeset
   208
         * KErrNotReady error is returned.On BatchMode KErrNone returned 
hgs
parents:
diff changeset
   209
         * and final command status(es) for each buffered command is returned 
hgs
parents:
diff changeset
   210
         * when DoCommitBatchL() is called.
hgs
parents:
diff changeset
   211
         */
hgs
parents:
diff changeset
   212
        void DoCommitItemL( TRequestStatus& aStatus );
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
        /**
hgs
parents:
diff changeset
   215
         * Closes operations for opened item. Called after DoReadItemL().
hgs
parents:
diff changeset
   216
         */
hgs
parents:
diff changeset
   217
        void DoCloseItem();
hgs
parents:
diff changeset
   218
hgs
parents:
diff changeset
   219
        /**
hgs
parents:
diff changeset
   220
         * Not supported for Contacts data provider.
hgs
parents:
diff changeset
   221
         */
hgs
parents:
diff changeset
   222
        void DoMoveItemL( TSmlDbItemUid aUid,
hgs
parents:
diff changeset
   223
            TSmlDbItemUid aNewParent, TRequestStatus& aStatus );
hgs
parents:
diff changeset
   224
hgs
parents:
diff changeset
   225
        /**
hgs
parents:
diff changeset
   226
         * Deletes item with given aUid.
hgs
parents:
diff changeset
   227
         */
hgs
parents:
diff changeset
   228
        void DoDeleteItemL( TSmlDbItemUid aUid, TRequestStatus& aStatus );
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
        /**
hgs
parents:
diff changeset
   231
         * Soft delete is not supported.
hgs
parents:
diff changeset
   232
         */
hgs
parents:
diff changeset
   233
        void DoSoftDeleteItemL( TSmlDbItemUid aUid, TRequestStatus& aStatus );
hgs
parents:
diff changeset
   234
hgs
parents:
diff changeset
   235
        /**
hgs
parents:
diff changeset
   236
         * Deletes all items except OwnCardId. ChangeFinder data is resetted.
hgs
parents:
diff changeset
   237
         */
hgs
parents:
diff changeset
   238
        void DoDeleteAllItemsL( TRequestStatus& aStatus );
hgs
parents:
diff changeset
   239
hgs
parents:
diff changeset
   240
        /**
hgs
parents:
diff changeset
   241
         * Returns True if synchronisation history is available for server, 
hgs
parents:
diff changeset
   242
         * otherwise False. Checks also that database id is not changed 
hgs
parents:
diff changeset
   243
         * for some reason.
hgs
parents:
diff changeset
   244
         */
hgs
parents:
diff changeset
   245
        TBool DoHasSyncHistory() const;
hgs
parents:
diff changeset
   246
hgs
parents:
diff changeset
   247
        /**
hgs
parents:
diff changeset
   248
         * Returns UIDs of items that are added to client after previous 
hgs
parents:
diff changeset
   249
         * synchronization.  ChangeFinder-method FindNewItemsL() called 
hgs
parents:
diff changeset
   250
         * to get list.
hgs
parents:
diff changeset
   251
         */
hgs
parents:
diff changeset
   252
        const MSmlDataItemUidSet& DoAddedItems() const;
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
        /**
hgs
parents:
diff changeset
   255
         * Returns UIDs of items that are deleted from client after previous 
hgs
parents:
diff changeset
   256
         * synchronization. ChangeFinder-method FindDeletedItemsL() called 
hgs
parents:
diff changeset
   257
         * to get list.
hgs
parents:
diff changeset
   258
         */
hgs
parents:
diff changeset
   259
        const MSmlDataItemUidSet& DoDeletedItems() const;
hgs
parents:
diff changeset
   260
hgs
parents:
diff changeset
   261
        /**
hgs
parents:
diff changeset
   262
         * Returns UIDs of items that are softdeleted from client after 
hgs
parents:
diff changeset
   263
         * previous synchronization. ChangeFinder-method 
hgs
parents:
diff changeset
   264
         * FindSoftDeletedItemsL() called to get list.
hgs
parents:
diff changeset
   265
         */
hgs
parents:
diff changeset
   266
        const MSmlDataItemUidSet& DoSoftDeletedItems() const;
hgs
parents:
diff changeset
   267
hgs
parents:
diff changeset
   268
        /**
hgs
parents:
diff changeset
   269
         * Returns UIDs of items that are updated in client after previous 
hgs
parents:
diff changeset
   270
         * synchronization. ChangeFinder-method FindChangedItemsL() called 
hgs
parents:
diff changeset
   271
         * to get list.
hgs
parents:
diff changeset
   272
         */
hgs
parents:
diff changeset
   273
        const MSmlDataItemUidSet& DoModifiedItems() const;
hgs
parents:
diff changeset
   274
hgs
parents:
diff changeset
   275
        /**
hgs
parents:
diff changeset
   276
         * Not actually supported for Contacts.
hgs
parents:
diff changeset
   277
         * Returns UIDs of items that are moved in client after previous 
hgs
parents:
diff changeset
   278
         * synchronization. ChangeFinder-method FindMovedItemsL() called 
hgs
parents:
diff changeset
   279
         * to get list.
hgs
parents:
diff changeset
   280
         */
hgs
parents:
diff changeset
   281
        const MSmlDataItemUidSet& DoMovedItems() const;
hgs
parents:
diff changeset
   282
hgs
parents:
diff changeset
   283
        /**
hgs
parents:
diff changeset
   284
         * Resets the current synchronisation history by ChangeFinder 
hgs
parents:
diff changeset
   285
         * ResetL()-method. ResetChangeInfoL()status is returned in aStatus.
hgs
parents:
diff changeset
   286
         */
hgs
parents:
diff changeset
   287
        void DoResetChangeInfoL( TRequestStatus& aStatus );
hgs
parents:
diff changeset
   288
hgs
parents:
diff changeset
   289
        /**
hgs
parents:
diff changeset
   290
         * Commits change info changes with ChangeFinder 
hgs
parents:
diff changeset
   291
         * CommitChangesL()-method and returns status for uid set aItems. 
hgs
parents:
diff changeset
   292
         * CommitChangeInfoL()status is returned in aStatus. This method 
hgs
parents:
diff changeset
   293
         * is called for all commands succefully executed in HostServer.
hgs
parents:
diff changeset
   294
         */
hgs
parents:
diff changeset
   295
        void DoCommitChangeInfoL( TRequestStatus& aStatus, 
hgs
parents:
diff changeset
   296
            const MSmlDataItemUidSet& aItems );
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
        /**
hgs
parents:
diff changeset
   299
         * Commits change info changes with ChangeFinder 
hgs
parents:
diff changeset
   300
         * CommitChangesL()-method and returns status in aStatus.
hgs
parents:
diff changeset
   301
         */
hgs
parents:
diff changeset
   302
        void DoCommitChangeInfoL( TRequestStatus& aStatus );
hgs
parents:
diff changeset
   303
hgs
parents:
diff changeset
   304
        const TDesC& GetStoreFormatResourceFileL() const;        
hgs
parents:
diff changeset
   305
        TInt DoExecuteBufferL( RArray< TInt >& aResultArray );
hgs
parents:
diff changeset
   306
        CNSmlDataModBase& GetDataMod();
hgs
parents:
diff changeset
   307
        TInt ExportContactsL( const TUid& aUid, CBufBase& aContactBufBase );
hgs
parents:
diff changeset
   308
        CArrayFixFlat<TUid>* ImportContactsL( const TDesC8& aContactBufBase );
hgs
parents:
diff changeset
   309
    };
hgs
parents:
diff changeset
   310
hgs
parents:
diff changeset
   311
#endif      //  CNSMLDUMMYDATASTORE_H
hgs
parents:
diff changeset
   312
hgs
parents:
diff changeset
   313
// End of file