79 * Destructor. |
79 * Destructor. |
80 */ |
80 */ |
81 IMPORT_C virtual ~CCenRepDatabaseUtil(); |
81 IMPORT_C virtual ~CCenRepDatabaseUtil(); |
82 |
82 |
83 public: |
83 public: |
84 /** |
84 /** |
85 * Start transaction in repository. |
85 * Start transaction in repository. |
86 * Note. Function leaves two cleanup items to cleanupstack and those |
86 * Note. Function leaves two cleanup items to cleanupstack and those |
87 * are freed when CommitTransaction or RollbackTransaction is called. |
87 * are freed when CommitTransaction or RollbackTransaction is called. |
88 * |
88 * |
89 * @since S60 v3.2 |
89 * @since S60 v3.2 |
90 */ |
90 */ |
91 IMPORT_C void BeginTransactionL(); |
91 IMPORT_C void BeginTransactionL(); |
92 |
92 |
93 /** |
93 /** |
94 * Commit changes in repository |
94 * Commit changes in repository |
95 * |
95 * |
96 * @since S60 v3.2 |
96 * @since S60 v3.2 |
97 * @return An error code |
97 * @return An error code |
98 */ |
98 */ |
99 IMPORT_C TInt CommitTransaction(); |
99 IMPORT_C TInt CommitTransaction(); |
100 |
100 |
101 /** |
101 /** |
102 * Rollback changes in repository |
102 * Rollback changes in repository |
103 * |
103 * |
104 * @since S60 v3.2 |
104 * @since S60 v3.2 |
105 */ |
105 */ |
106 IMPORT_C void RollbackTransaction(); |
106 IMPORT_C void RollbackTransaction(); |
107 |
107 |
108 /** |
108 /** |
109 * Store new entry to table. |
109 * Store new entry to table. |
110 * |
110 * |
111 * @since S60 v3.2 |
111 * @since S60 v3.2 |
112 * @param aEntryId Contains new ID when returns. |
112 * @param aEntryId Contains new ID when returns. |
113 * @param aArray Container for properties of this entry. |
113 * @param aArray Container for properties of this entry. |
114 */ |
114 */ |
115 IMPORT_C void AddEntryL( TInt& aEntryId, const RIpAppPropArray& aArray ); |
115 IMPORT_C void AddEntryL( TInt& aEntryId, const RIpAppPropArray& aArray ); |
116 |
116 |
117 /** |
117 /** |
118 * Search entry by entry ID. |
118 * Search entry by entry ID. |
119 * |
119 * |
120 * @since S60 v3.2 |
120 * @since S60 v3.2 |
121 * @param aEntryId Id of requested entry |
121 * @param aEntryId Id of requested entry |
122 * @param aArray on return, property array. |
122 * @param aArray on return, property array. |
123 * @return error code, KErrNotFound if unknown entry. |
|
124 */ |
|
125 IMPORT_C TInt FindEntryL( TInt aEntryId, RIpAppPropArray& aArray ); |
|
126 |
|
127 /** |
|
128 * Updates entry to central repository |
|
129 * |
|
130 * @since S60 v3.2 |
|
131 * @param aEntryId Id of requested entry |
|
132 * @param aArray Updated properties of entry |
|
133 * @return error code, KErrNotFound if unknown entry. |
|
134 */ |
|
135 IMPORT_C TInt UpdateEntryL( TInt aEntryId, |
|
136 const RIpAppPropArray& aArray ); |
|
137 |
|
138 /** |
|
139 * Deletes settings entry from storage by entry ID. |
|
140 * |
|
141 * @since S60 v3.2 |
|
142 * @param aEntryId Id of entry which is going to be deleted |
|
143 * @return error code, KErrNone if delete succeeded, otherwise system wide error code |
|
144 */ |
|
145 IMPORT_C TInt DeleteEntryL( TInt aEntryId ); |
|
146 |
|
147 /** |
|
148 * Search property of entry from storage. |
|
149 * |
|
150 * @since S60 v3.2 |
|
151 * @param aEntryId The entry ID of requested entry |
|
152 * @param aPropertyName property name to be found |
|
153 * @param aProperty on return, requested property |
|
154 * @return error code, KErrNone if succeeded, otherwise system wide error code |
|
155 */ |
|
156 IMPORT_C TInt FindPropertyL( TInt aEntryId, |
|
157 TUint32 aPropertyName, |
|
158 CCenRepDatabaseProperty& aProperty ); |
|
159 |
|
160 /** |
|
161 * Add or update properties of entry in table. |
|
162 * Values of existing properties are overwritten. |
|
163 * |
|
164 * @since S60 v3.2 |
|
165 * @param aEntryId The ID of updated entry |
|
166 * @param aArray new properties to be added or updated |
|
167 * @return error code, KErrNotFound if unknown entry. |
123 * @return error code, KErrNotFound if unknown entry. |
168 */ |
124 */ |
169 IMPORT_C TInt AddOrUpdatePropertiesL( TInt aEntryId, |
125 IMPORT_C TInt FindEntryL( TInt aEntryId, RIpAppPropArray& aArray ); |
170 const RIpAppPropArray& aArray ); |
126 |
171 |
127 /** |
172 |
128 * Updates entry to central repository |
173 /** |
129 * |
174 * Delete properties of entry in table. |
130 * @since S60 v3.2 |
175 * |
131 * @param aEntryId Id of requested entry |
176 * @since S60 v3.2 |
132 * @param aArray Updated properties of entry |
177 * @param aEntryId The entry ID of requested entry |
133 * @return error code, KErrNotFound if unknown entry. |
178 * @param aNameArray name of properties to be deleted |
134 */ |
179 * @return error code, KErrNotFound if unknown entry. |
135 IMPORT_C TInt UpdateEntryL( TInt aEntryId, |
180 */ |
136 const RIpAppPropArray& aArray ); |
181 IMPORT_C TInt DeletePropertiesL( TInt aEntryId, |
137 |
182 const RArray<TUint32>& aNameArray ); |
138 /** |
183 |
139 * Deletes settings entry from storage by entry ID. |
184 /** |
140 * |
185 * Return count of entries in table. |
141 * @since S60 v3.2 |
186 * |
142 * @param aEntryId Id of entry which is going to be deleted |
187 * @since S60 v3.2 |
143 * @return error code, KErrNone if delete succeeded, otherwise system wide error code |
188 * @return Count of stored settings. |
144 */ |
189 */ |
145 IMPORT_C TInt DeleteEntryL( TInt aEntryId ); |
190 IMPORT_C TInt EntryCountL( TInt& aCount ); |
146 |
191 |
147 /** |
192 /** |
148 * Search property of entry from storage. |
193 * Search all entry IDs from storage |
149 * |
194 * |
150 * @since S60 v3.2 |
195 * @since S60 v3.2 |
151 * @param aEntryId The entry ID of requested entry |
196 * @param aEntryIds An array containing returned entry IDs |
152 * @param aPropertyName property name to be found |
197 * @return error code |
153 * @param aProperty on return, requested property |
198 */ |
154 * @return error code, KErrNone if succeeded, otherwise system wide error code |
199 IMPORT_C TInt FindEntryIdsL( RArray<TInt>& aEntryIds ); |
155 */ |
|
156 IMPORT_C TInt FindPropertyL( TInt aEntryId, |
|
157 TUint32 aPropertyName, |
|
158 CCenRepDatabaseProperty& aProperty ); |
|
159 |
|
160 /** |
|
161 * Add or update properties of entry in table. |
|
162 * Values of existing properties are overwritten. |
|
163 * |
|
164 * @since S60 v3.2 |
|
165 * @param aEntryId The ID of updated entry |
|
166 * @param aArray new properties to be added or updated |
|
167 * @return error code, KErrNotFound if unknown entry. |
|
168 */ |
|
169 IMPORT_C TInt AddOrUpdatePropertiesL( TInt aEntryId, |
|
170 const RIpAppPropArray& aArray ); |
|
171 |
|
172 |
|
173 /** |
|
174 * Delete properties of entry in table. |
|
175 * |
|
176 * @since S60 v3.2 |
|
177 * @param aEntryId The entry ID of requested entry |
|
178 * @param aNameArray name of properties to be deleted |
|
179 * @return error code, KErrNotFound if unknown entry. |
|
180 */ |
|
181 IMPORT_C TInt DeletePropertiesL( TInt aEntryId, |
|
182 const RArray<TUint32>& aNameArray ); |
|
183 |
|
184 /** |
|
185 * Return count of entries in table. |
|
186 * |
|
187 * @since S60 v3.2 |
|
188 * @return Count of stored settings. |
|
189 */ |
|
190 IMPORT_C TInt EntryCountL( TInt& aCount ); |
|
191 |
|
192 /** |
|
193 * Search all entry IDs from storage |
|
194 * |
|
195 * @since S60 v3.2 |
|
196 * @param aEntryIds An array containing returned entry IDs |
|
197 * @return error code |
|
198 */ |
|
199 IMPORT_C TInt FindEntryIdsL( RArray<TInt>& aEntryIds ); |
200 |
200 |
201 /** |
201 /** |
202 * Find entry IDs with same properties |
202 * Find entry IDs with same properties |
203 * |
203 * |
204 * @since S60 v3.2 |
204 * @since S60 v3.2 |
205 * @param aPropertyArray property array |
205 * @param aPropertyArray property array |
206 * @param aEntryIds on return, entry Ids with same properties |
206 * @param aEntryIds on return, entry Ids with same properties |
207 * @return error code |
207 * @return error code |
208 */ |
208 */ |
209 IMPORT_C TInt FindEntryIdsFromPropertiesL( const RIpAppPropArray& aPropertyArray, |
209 IMPORT_C TInt FindEntryIdsFromPropertiesL( const RIpAppPropArray& aPropertyArray, |
210 RArray<TInt>& aEntryIds ); |
210 RArray<TInt>& aEntryIds ); |
211 |
211 |
212 |
212 |
213 private: |
213 private: |
214 |
214 |
215 /** |
215 /** |
216 * C++ default constructor. |
216 * C++ default constructor. |
224 /** |
224 /** |
225 * By default Symbian 2nd phase constructor is private. |
225 * By default Symbian 2nd phase constructor is private. |
226 */ |
226 */ |
227 void ConstructL( TUid aUid ); |
227 void ConstructL( TUid aUid ); |
228 |
228 |
229 /** |
229 /** |
230 * Release semaphore, this function is used in custom cleanup |
230 * Release semaphore, this function is used in custom cleanup |
231 * |
231 * |
232 * @since S60 v3.2 |
232 * @since S60 v3.2 |
233 * @param aPtr Pointer to an object which is the target of the cleanup operation |
233 * @param aPtr Pointer to an object which is the target of the cleanup operation |
234 */ |
234 */ |
235 static void ReleaseSemaphore( TAny* aPtr ); |
235 static void ReleaseSemaphore( TAny* aPtr ); |
236 |
236 |
237 /** |
237 /** |
238 * Release semaphore |
238 * Release semaphore |
239 * |
239 * |
240 * @since S60 v3.2 |
240 * @since S60 v3.2 |
241 */ |
241 */ |
242 void DoReleaseSemaphore(); |
242 void DoReleaseSemaphore(); |
243 |
243 |
244 /** |
244 /** |
245 * Set new value for given key. Creates the key if it doesn't exists. |
245 * Set new value for given key. Creates the key if it doesn't exists. |
246 * |
246 * |
247 * @since S60 v3.2 |
247 * @since S60 v3.2 |
248 * @param aKey |
248 * @param aKey |
249 * @param aValue |
249 * @param aValue |
250 */ |
250 */ |
251 template<class T> void SetOrCreateKeyL( TUint32 aKey, |
251 template<class T> void SetOrCreateKeyL( TUint32 aKey, |
252 const T& aValue ); |
252 const T& aValue ); |
253 |
253 |
254 /** |
254 /** |
255 * Create new ID for entry. |
255 * Create new ID for entry. |
256 * |
256 * |
257 * @since S60 v3.2 |
257 * @since S60 v3.2 |
258 * @param aNewId Contains new ID when return. |
258 * @param aNewId Contains new ID when return. |
259 */ |
259 */ |
260 void CreateEntryIdL( TInt& aNewId ); |
260 void CreateEntryIdL( TInt& aNewId ); |
261 |
261 |
262 /** |
262 /** |
263 * Defines next available key for ID. |
263 * Defines next available key for ID. |
264 * |
264 * |
265 * @since S60 v3.2 |
265 * @since S60 v3.2 |
266 * @return New key for ID |
266 * @return New key for ID |
267 */ |
267 */ |
268 TUint32 GetNewIdKeyL( ); |
268 TUint32 GetNewIdKeyL( ); |
269 |
269 |
270 /** |
270 /** |
271 * Update given properties of entry. |
271 * Update given properties of entry. |
272 * |
272 * |
273 * @since S60 v3.2 |
273 * @since S60 v3.2 |
274 * @param aIdKey |
274 * @param aIdKey |
275 * @param Array Contains updated properties and values |
275 * @param Array Contains updated properties and values |
276 */ |
276 */ |
277 void UpdatePropertiesL( TUint32 aIdKey, const RIpAppPropArray& aArray ); |
277 void UpdatePropertiesL( TUint32 aIdKey, const RIpAppPropArray& aArray ); |
278 |
278 |
279 /** |
279 /** |
280 * Check if entry has given properties. |
280 * Check if entry has given properties. |
281 * |
281 * |
282 * @since S60 v3.2 |
282 * @since S60 v3.2 |
283 * @param aEntryId Id of entry. |
283 * @param aEntryId Id of entry. |
284 * @param aPropertyArray Properties to be checked. |
284 * @param aPropertyArray Properties to be checked. |
285 * @param aOk Result |
285 * @param aOk Result |
286 */ |
286 */ |
287 void CheckEntryHasPropertiesL( TInt aEntryId, const RIpAppPropArray& aPropertyArray, TBool& aOk ); |
287 void CheckEntryHasPropertiesL( TInt aEntryId, const RIpAppPropArray& aPropertyArray, TBool& aOk ); |
288 |
288 |
289 /** |
289 /** |
290 * Custom cleanup for array. |
290 * Custom cleanup for array. |
291 * |
291 * |
292 * @since S60 v3.2 |
292 * @since S60 v3.2 |
293 * @param aPointer |
293 * @param aPointer |
294 */ |
294 */ |
295 static void CleanupPointerArray( TAny* aPointer ); |
295 static void CleanupPointerArray( TAny* aPointer ); |
296 |
296 |
297 |
297 |
298 private: // data |
298 private: // data |
299 |
299 |
300 /** |
300 /** |
301 * Central Repository object. |
301 * Central Repository object. |
302 * Own. |
302 * Own. |
303 */ |
303 */ |
304 CRepository* iRepository; |
304 CRepository* iRepository; |
305 |
305 |
306 /** |
306 /** |
307 * RSemaphore object. |
307 * RSemaphore object. |
308 * Own. |
308 * Own. |
309 */ |
309 */ |
310 RSemaphore iSemaphore; |
310 RSemaphore iSemaphore; |
311 |
311 |
312 /** |
312 /** |
313 * Start key in first column( Id column ) |
313 * Start key in first column( Id column ) |
314 */ |
314 */ |
315 TUint32 iStartKey; |
315 TUint32 iStartKey; |
316 |
316 |
317 /** |
317 /** |
318 * Column increment |
318 * Column increment |
319 */ |
319 */ |
320 TUint32 iColIncrement; |
320 TUint32 iColIncrement; |
321 |
321 |
322 /** |
322 /** |
323 * Column mask |
323 * Column mask |
324 */ |
324 */ |
325 TUint32 iColMask; |
325 TUint32 iColMask; |
326 |
326 |
327 /** |
327 /** |
328 * Id counter key |
328 * Id counter key |
329 */ |
329 */ |
330 TUint32 iIdCounterKey; |
330 TUint32 iIdCounterKey; |
331 |
331 |
332 /** |
332 /** |
333 * Column count |
333 * Column count |
334 */ |
334 */ |
335 TInt iColCount; |
335 TInt iColCount; |
336 |
336 |
337 private: // For testing |
337 private: // For testing |
338 #ifdef TEST_EUNIT |
338 #ifdef TEST_EUNIT |
339 friend class UT_CCenRepDatabaseUtil; |
339 friend class UT_CCenRepDatabaseUtil; |
340 #endif |
340 #endif |