williamr@4
|
1 |
/*
|
williamr@4
|
2 |
* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
|
williamr@4
|
3 |
* All rights reserved.
|
williamr@4
|
4 |
* This component and the accompanying materials are made available
|
williamr@4
|
5 |
* under the terms of "Eclipse Public License v1.0"
|
williamr@4
|
6 |
* which accompanies this distribution, and is available
|
williamr@4
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
williamr@4
|
8 |
*
|
williamr@4
|
9 |
* Initial Contributors:
|
williamr@4
|
10 |
* Nokia Corporation - initial contribution.
|
williamr@4
|
11 |
*
|
williamr@4
|
12 |
* Contributors:
|
williamr@4
|
13 |
*
|
williamr@4
|
14 |
* Description: For adding content to be synchronized.
|
williamr@4
|
15 |
*
|
williamr@4
|
16 |
*/
|
williamr@4
|
17 |
|
williamr@4
|
18 |
|
williamr@4
|
19 |
#ifndef __SMLDATAPROVIDER_H__
|
williamr@4
|
20 |
#define __SMLDATAPROVIDER_H__
|
williamr@4
|
21 |
//
|
williamr@4
|
22 |
#include <SyncMLDef.h>
|
williamr@4
|
23 |
#include <SyncMLDataFilter.h>
|
williamr@4
|
24 |
#include <syncml/SmlDataSyncDefs.h>
|
williamr@4
|
25 |
#include <SmlDataFormat.h>
|
williamr@4
|
26 |
//
|
williamr@4
|
27 |
/**
|
williamr@4
|
28 |
@publishedPartner
|
williamr@4
|
29 |
|
williamr@4
|
30 |
Plug-in Data Provider API.
|
williamr@4
|
31 |
*/
|
williamr@4
|
32 |
|
williamr@4
|
33 |
/** The parent uid to be used for the root */
|
williamr@4
|
34 |
const TSmlDbItemUid KDbItemUidRoot = -1;
|
williamr@4
|
35 |
|
williamr@4
|
36 |
/*
|
williamr@4
|
37 |
UIDs for use with CSmlDataProvider::SupportsOperation.
|
williamr@4
|
38 |
Other optional features are specified in the CSmlDataStoreFormat object
|
williamr@4
|
39 |
obtained from the Data Provider.
|
williamr@4
|
40 |
*/
|
williamr@4
|
41 |
/**
|
williamr@4
|
42 |
This UID identifies optional support for transaction operations.
|
williamr@4
|
43 |
For a DBA implementation to support this operation, it must be possible to add, change, and delete items within an atomic transaction.
|
williamr@4
|
44 |
*/
|
williamr@4
|
45 |
const TUid KUidSmlSupportTransaction = { 0x10009FC6 };
|
williamr@4
|
46 |
/**
|
williamr@4
|
47 |
This UID identifies optional support for suspend and resume operations.
|
williamr@4
|
48 |
For a DBA implementation to support this operation, it must be possible to to mark individual items as being 'in-sync', while other
|
williamr@4
|
49 |
items remain 'out-of-sync'.
|
williamr@4
|
50 |
*/
|
williamr@4
|
51 |
const TUid KUidSmlSupportSuspendResume = { 0x10009FC7 };
|
williamr@4
|
52 |
const TUid KUidSmlSupportBatch = { 0x10009FC8 };
|
williamr@4
|
53 |
const TUid KUidSmlSupportMultipleStores = { 0x10009FC9 };
|
williamr@4
|
54 |
const TUid KUidSmlSupportsUserSelectableMatchType = { 0x10009FCA };
|
williamr@4
|
55 |
|
williamr@4
|
56 |
/**
|
williamr@4
|
57 |
Set of Data Item LUIDs.
|
williamr@4
|
58 |
*/
|
williamr@4
|
59 |
class MSmlDataItemUidSet
|
williamr@4
|
60 |
{
|
williamr@4
|
61 |
public:
|
williamr@4
|
62 |
/**
|
williamr@4
|
63 |
Returns the number of items in the set.
|
williamr@4
|
64 |
*/
|
williamr@4
|
65 |
IMPORT_C TInt ItemCount() const;
|
williamr@4
|
66 |
/**
|
williamr@4
|
67 |
Returns the index of the specified item UID in the set, or -1 if the item UID is not present.
|
williamr@4
|
68 |
*/
|
williamr@4
|
69 |
IMPORT_C TInt ItemIndex(TSmlDbItemUid aItemId) const;
|
williamr@4
|
70 |
/**
|
williamr@4
|
71 |
Retuns the item UID at the specified index in the set.
|
williamr@4
|
72 |
*/
|
williamr@4
|
73 |
IMPORT_C TSmlDbItemUid ItemAt(TInt aIndex) const;
|
williamr@4
|
74 |
public:
|
williamr@4
|
75 |
IMPORT_C void ExternalizeL(RWriteStream& aStream) const;
|
williamr@4
|
76 |
protected:
|
williamr@4
|
77 |
// hide the virtual methods from the public interface to enable future extension without breaking BC
|
williamr@4
|
78 |
virtual TInt DoItemCount() const = 0;
|
williamr@4
|
79 |
virtual TInt DoItemIndex(TSmlDbItemUid aItemId) const = 0;
|
williamr@4
|
80 |
virtual TSmlDbItemUid DoItemAt(TInt aIndex) const = 0;
|
williamr@4
|
81 |
virtual void DoExternalizeL(RWriteStream& aStream) const = 0;
|
williamr@4
|
82 |
};
|
williamr@4
|
83 |
|
williamr@4
|
84 |
|
williamr@4
|
85 |
/**
|
williamr@4
|
86 |
Data Store interface.
|
williamr@4
|
87 |
*/
|
williamr@4
|
88 |
class CSmlDataStore : public CBase
|
williamr@4
|
89 |
{
|
williamr@4
|
90 |
public:
|
williamr@4
|
91 |
/**
|
williamr@4
|
92 |
Opens the data store specified by aStoreName asynchronously.
|
williamr@4
|
93 |
@param aStoreName The name of the data store to open.
|
williamr@4
|
94 |
@param aContext Identifies the specific synchronisation relationship to use for the synchronisation.
|
williamr@4
|
95 |
@param aStatus On completion of the open, contains the result code.
|
williamr@4
|
96 |
*/
|
williamr@4
|
97 |
IMPORT_C void OpenL(const TDesC& aStoreName, MSmlSyncRelationship& aContext, TRequestStatus& aStatus);
|
williamr@4
|
98 |
/**
|
williamr@4
|
99 |
Cancel the current asynchronous request, including open. Only one asynchronous request may be outstanding at any one time.
|
williamr@4
|
100 |
*/
|
williamr@4
|
101 |
IMPORT_C void CancelRequest();
|
williamr@4
|
102 |
public:
|
williamr@4
|
103 |
/**
|
williamr@4
|
104 |
Returns the name of the open data store.
|
williamr@4
|
105 |
*/
|
williamr@4
|
106 |
IMPORT_C const TDesC& StoreName() const;
|
williamr@4
|
107 |
public:
|
williamr@4
|
108 |
/**
|
williamr@4
|
109 |
BeginTransactionL() starts the transaction mode. During this mode calls to CreateItemL, ReplaceItemL,
|
williamr@4
|
110 |
WriteItemL, CommitItemL, MoveItemL, DeleteItemL and SoftDeleteItemL will be part of this transaction.
|
williamr@4
|
111 |
Their RequestStatus must be completed, even if the change is not yet really executed in the Data Store.
|
williamr@4
|
112 |
If a RequestStatus is completed with an error code, the transaction has failed and a rollback must be
|
williamr@4
|
113 |
done. In this case RevertTransaction will be called.
|
williamr@4
|
114 |
*/
|
williamr@4
|
115 |
IMPORT_C void BeginTransactionL();
|
williamr@4
|
116 |
/**
|
williamr@4
|
117 |
CommitTransactionL() will be called at the end of a successful transaction. At this point in time the
|
williamr@4
|
118 |
operations within the transaction are applied to the Data Store in an atomic way. If all operations
|
williamr@4
|
119 |
succeed, the RequestStatus must be completed with KErrNone. If an operation fails, a rollback must be
|
williamr@4
|
120 |
done and the RequestStatus must be completed with an appropriate error code.
|
williamr@4
|
121 |
*/
|
williamr@4
|
122 |
IMPORT_C void CommitTransactionL(TRequestStatus& aStatus);
|
williamr@4
|
123 |
/**
|
williamr@4
|
124 |
RevertTransaction() will be called to abort an ongoing transaction. None of the operations already
|
williamr@4
|
125 |
submitted may be applied to the Data Store. The RequestStatus must be completed with KErrNone as a revert
|
williamr@4
|
126 |
cannot fail.
|
williamr@4
|
127 |
*/
|
williamr@4
|
128 |
IMPORT_C void RevertTransaction(TRequestStatus& aStatus);
|
williamr@4
|
129 |
|
williamr@4
|
130 |
public:
|
williamr@4
|
131 |
/**
|
williamr@4
|
132 |
BeginBatchL() starts the batch mode. During this mode calls to CreateItemL, ReplaceItemL,
|
williamr@4
|
133 |
WriteItemL, CommitItemL, MoveItemL, DeleteItemL and SoftDeleteItemL will be part of this batch.
|
williamr@4
|
134 |
Their RequestStatus must be completed with KErrNone, which only signals acceptance of the operation
|
williamr@4
|
135 |
for batch processing.
|
williamr@4
|
136 |
*/
|
williamr@4
|
137 |
IMPORT_C void BeginBatchL();
|
williamr@4
|
138 |
/**
|
williamr@4
|
139 |
CommitBatchL() will be called at the end of the batch mode. This tells the Data Store to
|
williamr@4
|
140 |
process the batched operations (in the order they were submitted), and to append the error code
|
williamr@4
|
141 |
for each operation to aResultArray.
|
williamr@4
|
142 |
The error codes in aResultArray are only valid if the RequestStatus is completed with KErrNone.
|
williamr@4
|
143 |
If the RequestStatus is completed with an error code none of the operations in the batch mode
|
williamr@4
|
144 |
were applied to the Data Store.
|
williamr@4
|
145 |
*/
|
williamr@4
|
146 |
IMPORT_C void CommitBatchL(RArray<TInt>& aResultArray, TRequestStatus& aStatus);
|
williamr@4
|
147 |
/**
|
williamr@4
|
148 |
CancelBatch() will be called to abort an ongoing batch mode. None of the operations already
|
williamr@4
|
149 |
submitted may be applied to the Data Store.
|
williamr@4
|
150 |
*/
|
williamr@4
|
151 |
IMPORT_C void CancelBatch();
|
williamr@4
|
152 |
|
williamr@4
|
153 |
public:
|
williamr@4
|
154 |
/**
|
williamr@4
|
155 |
Sets the SyncML server Data Format - this may optionally be used by the Data Provider to filter out
|
williamr@4
|
156 |
properties that the server does not support, and should be used to avoid deleting these properties
|
williamr@4
|
157 |
in case the server sends a changed item to the Data Provider
|
williamr@4
|
158 |
*/
|
williamr@4
|
159 |
IMPORT_C void SetRemoteStoreFormatL(const CSmlDataStoreFormat& aServerDataStoreFormat);
|
williamr@4
|
160 |
/**
|
williamr@4
|
161 |
Sets the SyncML server maximum object size - this may optionally be used by the Data Provider to not send
|
williamr@4
|
162 |
items to the server exceeding its maximum size. 0 means there is no limit.
|
williamr@4
|
163 |
*/
|
williamr@4
|
164 |
IMPORT_C void SetRemoteMaxObjectSize(TInt aServerMaxObjectSize);
|
williamr@4
|
165 |
/**
|
williamr@4
|
166 |
Gets the Data Store maximum object size which is reported to the SyncML server. 0 means there is no limit.
|
williamr@4
|
167 |
*/
|
williamr@4
|
168 |
IMPORT_C TInt MaxObjectSize() const;
|
williamr@4
|
169 |
|
williamr@4
|
170 |
IMPORT_C void OpenItemL(TSmlDbItemUid aUid, TBool& aFieldChange, TInt& aSize, TSmlDbItemUid& aParent, TDes8& aMimeType, TDes8& aMimeVer, TRequestStatus& aStatus);
|
williamr@4
|
171 |
IMPORT_C void CreateItemL(TSmlDbItemUid& aUid, TInt aSize, TSmlDbItemUid aParent, const TDesC8& aMimeType, const TDesC8& aMimeVer, TRequestStatus& aStatus);
|
williamr@4
|
172 |
IMPORT_C void ReplaceItemL(TSmlDbItemUid aUid, TInt aSize, TSmlDbItemUid aParent, TBool aFieldChange, TRequestStatus& aStatus);
|
williamr@4
|
173 |
IMPORT_C void ReadItemL(TDes8& aBuffer);
|
williamr@4
|
174 |
IMPORT_C void WriteItemL(const TDesC8& aData);
|
williamr@4
|
175 |
IMPORT_C void CommitItemL(TRequestStatus& aStatus);
|
williamr@4
|
176 |
IMPORT_C void CloseItem();
|
williamr@4
|
177 |
IMPORT_C void MoveItemL(TSmlDbItemUid aUid, TSmlDbItemUid aNewParent, TRequestStatus& aStatus);
|
williamr@4
|
178 |
IMPORT_C void DeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
|
williamr@4
|
179 |
IMPORT_C void SoftDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus);
|
williamr@4
|
180 |
IMPORT_C void DeleteAllItemsL(TRequestStatus& aStatus);
|
williamr@4
|
181 |
public:
|
williamr@4
|
182 |
IMPORT_C TBool HasSyncHistory() const;
|
williamr@4
|
183 |
IMPORT_C const MSmlDataItemUidSet& AddedItems() const;
|
williamr@4
|
184 |
IMPORT_C const MSmlDataItemUidSet& DeletedItems() const;
|
williamr@4
|
185 |
IMPORT_C const MSmlDataItemUidSet& SoftDeletedItems() const;
|
williamr@4
|
186 |
IMPORT_C const MSmlDataItemUidSet& ModifiedItems() const;
|
williamr@4
|
187 |
IMPORT_C const MSmlDataItemUidSet& MovedItems() const;
|
williamr@4
|
188 |
IMPORT_C void ResetChangeInfoL(TRequestStatus& aStatus);
|
williamr@4
|
189 |
IMPORT_C void CommitChangeInfoL(TRequestStatus& aStatus, const MSmlDataItemUidSet& aItems);
|
williamr@4
|
190 |
IMPORT_C void CommitChangeInfoL(TRequestStatus& aStatus);
|
williamr@4
|
191 |
|
williamr@4
|
192 |
protected:
|
williamr@4
|
193 |
// hide the virtual methods from the public interface to enable future extension without breaking BC
|
williamr@4
|
194 |
virtual void DoOpenL(const TDesC& aStoreName, MSmlSyncRelationship& aContext, TRequestStatus& aStatus) = 0;
|
williamr@4
|
195 |
virtual void DoCancelRequest() = 0;
|
williamr@4
|
196 |
virtual const TDesC& DoStoreName() const = 0;
|
williamr@4
|
197 |
virtual void DoBeginTransactionL() = 0;
|
williamr@4
|
198 |
virtual void DoCommitTransactionL(TRequestStatus& aStatus) = 0;
|
williamr@4
|
199 |
virtual void DoRevertTransaction(TRequestStatus& aStatus) = 0;
|
williamr@4
|
200 |
virtual void DoBeginBatchL() = 0;
|
williamr@4
|
201 |
virtual void DoCommitBatchL(RArray<TInt>& aResultArray, TRequestStatus& aStatus) = 0;
|
williamr@4
|
202 |
virtual void DoCancelBatch() = 0;
|
williamr@4
|
203 |
virtual void DoSetRemoteStoreFormatL(const CSmlDataStoreFormat& aServerDataStoreFormat) = 0;
|
williamr@4
|
204 |
virtual void DoSetRemoteMaxObjectSize(TInt aServerMaxObjectSize) = 0;
|
williamr@4
|
205 |
virtual TInt DoMaxObjectSize() const = 0;
|
williamr@4
|
206 |
|
williamr@4
|
207 |
virtual void DoOpenItemL(TSmlDbItemUid aUid, TBool& aFieldChange, TInt& aSize, TSmlDbItemUid& aParent, TDes8& aMimeType, TDes8& aMimeVer, TRequestStatus& aStatus) = 0;
|
williamr@4
|
208 |
virtual void DoCreateItemL(TSmlDbItemUid& aUid, TInt aSize, TSmlDbItemUid aParent, const TDesC8& aMimeType, const TDesC8& aMimeVer, TRequestStatus& aStatus) = 0;
|
williamr@4
|
209 |
virtual void DoReplaceItemL(TSmlDbItemUid aUid, TInt aSize, TSmlDbItemUid aParent, TBool aFieldChange, TRequestStatus& aStatus) = 0;
|
williamr@4
|
210 |
virtual void DoReadItemL(TDes8& aBuffer) = 0;
|
williamr@4
|
211 |
virtual void DoWriteItemL(const TDesC8& aData) = 0;
|
williamr@4
|
212 |
virtual void DoCommitItemL(TRequestStatus& aStatus) = 0;
|
williamr@4
|
213 |
virtual void DoCloseItem() = 0;
|
williamr@4
|
214 |
virtual void DoMoveItemL(TSmlDbItemUid aUid, TSmlDbItemUid aNewParent, TRequestStatus& aStatus) = 0;
|
williamr@4
|
215 |
virtual void DoDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus) = 0;
|
williamr@4
|
216 |
virtual void DoSoftDeleteItemL(TSmlDbItemUid aUid, TRequestStatus& aStatus) = 0;
|
williamr@4
|
217 |
virtual void DoDeleteAllItemsL(TRequestStatus& aStatus) = 0;
|
williamr@4
|
218 |
|
williamr@4
|
219 |
virtual TBool DoHasSyncHistory() const = 0;
|
williamr@4
|
220 |
virtual const MSmlDataItemUidSet& DoAddedItems() const = 0;
|
williamr@4
|
221 |
virtual const MSmlDataItemUidSet& DoDeletedItems() const = 0;
|
williamr@4
|
222 |
virtual const MSmlDataItemUidSet& DoSoftDeletedItems() const = 0;
|
williamr@4
|
223 |
virtual const MSmlDataItemUidSet& DoModifiedItems() const = 0;
|
williamr@4
|
224 |
virtual const MSmlDataItemUidSet& DoMovedItems() const = 0;
|
williamr@4
|
225 |
virtual void DoResetChangeInfoL(TRequestStatus& aStatus) = 0;
|
williamr@4
|
226 |
virtual void DoCommitChangeInfoL(TRequestStatus& aStatus, const MSmlDataItemUidSet& aItems) = 0;
|
williamr@4
|
227 |
virtual void DoCommitChangeInfoL(TRequestStatus& aStatus) = 0;
|
williamr@4
|
228 |
};
|
williamr@4
|
229 |
|
williamr@4
|
230 |
|
williamr@4
|
231 |
enum TSmlFrameworkEvent
|
williamr@4
|
232 |
{
|
williamr@4
|
233 |
ESmlFrameworkTaskDeleted
|
williamr@4
|
234 |
};
|
williamr@4
|
235 |
|
williamr@4
|
236 |
|
williamr@4
|
237 |
/**
|
williamr@4
|
238 |
ECom Data Provider interface.
|
williamr@4
|
239 |
*/
|
williamr@4
|
240 |
class CSmlDataProvider : public CBase
|
williamr@4
|
241 |
{
|
williamr@4
|
242 |
public:
|
williamr@4
|
243 |
IMPORT_C static CSmlDataProvider* NewL(TSmlDataProviderId aId);
|
williamr@4
|
244 |
IMPORT_C virtual ~CSmlDataProvider();
|
williamr@4
|
245 |
IMPORT_C TSmlDataProviderId Identifier() const;
|
williamr@4
|
246 |
public:
|
williamr@4
|
247 |
IMPORT_C void OnFrameworkEvent(TSmlFrameworkEvent, TInt aParam1, TInt aParam2);
|
williamr@4
|
248 |
IMPORT_C TBool SupportsOperation(TUid aOpId) const;
|
williamr@4
|
249 |
IMPORT_C const CSmlDataStoreFormat& StoreFormatL();
|
williamr@4
|
250 |
IMPORT_C CDesCArray* ListStoresLC();
|
williamr@4
|
251 |
IMPORT_C const TDesC& DefaultStoreL();
|
williamr@4
|
252 |
IMPORT_C CSmlDataStore* NewStoreInstanceLC();
|
williamr@4
|
253 |
public:
|
williamr@4
|
254 |
/**
|
williamr@4
|
255 |
This method returns the set of filters that can be used to send to the SyncML server.
|
williamr@4
|
256 |
*/
|
williamr@4
|
257 |
IMPORT_C const RPointerArray<CSyncMLFilter>& SupportedServerFiltersL();
|
williamr@4
|
258 |
|
williamr@4
|
259 |
/**
|
williamr@4
|
260 |
This method checks what filters are supported by server.
|
williamr@4
|
261 |
@param aServerDataStoreFormat The store format of server
|
williamr@4
|
262 |
@param aFilters The array that includes filters
|
williamr@4
|
263 |
@param aChangeInfo The change information about changes that data provider did
|
williamr@4
|
264 |
*/
|
williamr@4
|
265 |
IMPORT_C void CheckSupportedServerFiltersL(const CSmlDataStoreFormat& aServerDataStoreFormat, RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterChangeInfo& aChangeInfo);
|
williamr@4
|
266 |
|
williamr@4
|
267 |
/**
|
williamr@4
|
268 |
This method updates dynamic filters up-to-date.
|
williamr@4
|
269 |
@param aFilters The array that includes filters
|
williamr@4
|
270 |
@param aChangeInfo The change information about changes that data provider did
|
williamr@4
|
271 |
*/
|
williamr@4
|
272 |
IMPORT_C void CheckServerFiltersL(RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterChangeInfo& aChangeInfo);
|
williamr@4
|
273 |
|
williamr@4
|
274 |
/**
|
williamr@4
|
275 |
This method generates a record filter query to be sent to the SyncML server for the provided filters.
|
williamr@4
|
276 |
@param aFilters The filters to be used for the query generation
|
williamr@4
|
277 |
@param aMatch The filter match type to be used
|
williamr@4
|
278 |
@param aFilterMimeType The mime type of the returned filter query
|
williamr@4
|
279 |
@param TSyncMLFilterType The filter type of the returned filter query
|
williamr@4
|
280 |
@param aStoreName The name of used store
|
williamr@4
|
281 |
@return The record filter query to be sent to the SyncML server - empty if no record filter involved
|
williamr@4
|
282 |
for this specific filter
|
williamr@4
|
283 |
*/
|
williamr@4
|
284 |
IMPORT_C HBufC* GenerateRecordFilterQueryLC(const RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterMatchType aMatch, TDes& aFilterMimeType, TSyncMLFilterType& aFilterType, TDesC& aStoreName);
|
williamr@4
|
285 |
|
williamr@4
|
286 |
/**
|
williamr@4
|
287 |
This method generates a field filter query to be sent to the SyncML server for the provided filters.
|
williamr@4
|
288 |
NOTE: this method isn't finalised - still thinking of a way to make it SyncML DS 1.2 independent
|
williamr@4
|
289 |
@param aFilters The filters to be used for the query generation
|
williamr@4
|
290 |
@param aFilterMimeType The mime type of the returned filter query
|
williamr@4
|
291 |
@param aProperties The field filter query to be sent to the SyncML server - empty if no field filter involved
|
williamr@4
|
292 |
for this specific filter
|
williamr@4
|
293 |
@param aStoreName The name of used store
|
williamr@4
|
294 |
*/
|
williamr@4
|
295 |
IMPORT_C void GenerateFieldFilterQueryL(const RPointerArray<CSyncMLFilter>& aFilters, TDes& aFilterMimeType, RPointerArray<CSmlDataProperty>& aProperties, TDesC& aStoreName);
|
williamr@4
|
296 |
|
williamr@4
|
297 |
protected:
|
williamr@4
|
298 |
// hide the virtual methods from the public interface to enable future extension without breaking BC
|
williamr@4
|
299 |
virtual void DoOnFrameworkEvent(TSmlFrameworkEvent, TInt aParam1, TInt aParam2) = 0;
|
williamr@4
|
300 |
virtual TBool DoSupportsOperation(TUid aOpId) const = 0;
|
williamr@4
|
301 |
virtual const CSmlDataStoreFormat& DoStoreFormatL() = 0;
|
williamr@4
|
302 |
virtual CDesCArray* DoListStoresLC() = 0;
|
williamr@4
|
303 |
virtual const TDesC& DoDefaultStoreL() = 0;
|
williamr@4
|
304 |
virtual CSmlDataStore* DoNewStoreInstanceLC() = 0;
|
williamr@4
|
305 |
|
williamr@4
|
306 |
virtual const RPointerArray<CSyncMLFilter>& DoSupportedServerFiltersL() = 0;
|
williamr@4
|
307 |
virtual void DoCheckSupportedServerFiltersL(const CSmlDataStoreFormat& aServerDataStoreFormat, RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterChangeInfo& aChangeInfo) = 0;
|
williamr@4
|
308 |
virtual void DoCheckServerFiltersL(RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterChangeInfo& aChangeInfo) = 0;
|
williamr@4
|
309 |
virtual HBufC* DoGenerateRecordFilterQueryLC(const RPointerArray<CSyncMLFilter>& aFilters, TSyncMLFilterMatchType aMatch, TDes& aFilterMimeType, TSyncMLFilterType& aFilterType, TDesC& aStoreName) = 0;
|
williamr@4
|
310 |
virtual void DoGenerateFieldFilterQueryL(const RPointerArray<CSyncMLFilter>& aFilters, TDes& aFilterMimeType, RPointerArray<CSmlDataProperty>& aProperties, TDesC& aStoreName) = 0;
|
williamr@4
|
311 |
|
williamr@4
|
312 |
private:
|
williamr@4
|
313 |
TUid iEComTag;
|
williamr@4
|
314 |
TSmlDataProviderId iDPId;
|
williamr@4
|
315 |
};
|
williamr@4
|
316 |
|
williamr@4
|
317 |
|
williamr@4
|
318 |
///////////////////////////////////////////////////////////////////////////////
|
williamr@4
|
319 |
///////////////////////////////////////////////////////////////////////////////
|
williamr@4
|
320 |
///////////////////////////////////////////////////////////////////////////////
|
williamr@4
|
321 |
#endif
|