29 #include "clandmarkcmdgetlandmarks.h" |
29 #include "clandmarkcmdgetlandmarks.h" |
30 #include "clandmarkmanagehandlers.h" |
30 #include "clandmarkmanagehandlers.h" |
31 #include "clandmarkfilter.h" |
31 #include "clandmarkfilter.h" |
32 #include "clandmarkmanageobjects.h" |
32 #include "clandmarkmanageobjects.h" |
33 #include "mlandmarkobserver.h" |
33 #include "mlandmarkobserver.h" |
34 |
34 #include "clandmarkdummyao.h" |
|
35 #include "clandmarkoperation.h" |
35 //CONSTANTS |
36 //CONSTANTS |
36 _LIT(KProtocolSeparator, "://"); |
37 _LIT(KProtocolSeparator, "://"); |
37 _LIT(KLocalProtocol, "file"); |
38 _LIT(KLocalProtocol, "file"); |
38 |
39 |
39 // ============================ MEMBER FUNCTIONS =============================== |
40 // ============================ MEMBER FUNCTIONS =============================== |
76 iLog.Write (_L("CLandmarkService::ConstructL()") ); |
77 iLog.Write (_L("CLandmarkService::ConstructL()") ); |
77 #endif |
78 #endif |
78 |
79 |
79 iDatabaseManager = CPosLmDatabaseManager::NewL ( ); |
80 iDatabaseManager = CPosLmDatabaseManager::NewL ( ); |
80 iManageHandler = CLandmarkManageHandlers::NewL ( ); |
81 iManageHandler = CLandmarkManageHandlers::NewL ( ); |
|
82 iManageObjects = CLandmarkManageObjects::NewL(); |
81 SetActiveL(KNullDesC); |
83 SetActiveL(KNullDesC); |
82 } |
84 } |
83 |
85 |
84 // ----------------------------------------------------------------------------- |
86 // ----------------------------------------------------------------------------- |
85 // CLandmarkService::CLandmarkService() |
87 // CLandmarkService::CLandmarkService() |
138 #ifdef _DEBUG |
140 #ifdef _DEBUG |
139 iLog.Write(_L("CLandmarkService::ImportL:Exit")); |
141 iLog.Write(_L("CLandmarkService::ImportL:Exit")); |
140 #endif |
142 #endif |
141 } |
143 } |
142 |
144 |
|
145 EXPORT_C void CLandmarkService::ImportL( TInt32 aTransactionId, CPosLandmarkParser& aLandmarkParser, |
|
146 const TDesC& aDatabaseUri ) |
|
147 { |
|
148 #ifdef _DEBUG |
|
149 iLog.Write(_L("CLandmarkService::ImportL: Async")); |
|
150 #endif |
|
151 |
|
152 CLandmarkHandler* handler = iManageHandler->GetHandlerL(aDatabaseUri); |
|
153 if ( !handler ) |
|
154 { |
|
155 handler = iManageHandler->CreateHandlerL(aDatabaseUri); |
|
156 } |
|
157 CLandmarkOperation* import = CLandmarkOperation::NewLC(iObserver, |
|
158 iManageObjects); |
|
159 import->ImportL(aTransactionId,handler,aLandmarkParser); |
|
160 iManageObjects->AppendL(import); |
|
161 CleanupStack::Pop(import); |
|
162 |
|
163 #ifdef _DEBUG |
|
164 iLog.Write(_L("CLandmarkService::ImportL:Async:Exit")); |
|
165 #endif |
|
166 } |
143 // ----------------------------------------------------------------------------- |
167 // ----------------------------------------------------------------------------- |
144 // CLandmarkService::ExportL( CPosLandmarkEncoder* aLandmarkEncoder, |
168 // CLandmarkService::ExportL( CPosLandmarkEncoder* aLandmarkEncoder, |
145 // const RArray<TPosLmItemId>& aLandmarkIdArray, const TDesC& aDatabaseUri ) |
169 // const RArray<TPosLmItemId>& aLandmarkIdArray, const TDesC& aDatabaseUri ) |
146 // Exports a list of landmarks from database to a file. |
170 // Exports a list of landmarks from database to a file. |
147 // ----------------------------------------------------------------------------- |
171 // ----------------------------------------------------------------------------- |
157 CPosLandmarkDatabase* db = handler->LandmarkDatabaseHandle(); |
181 CPosLandmarkDatabase* db = handler->LandmarkDatabaseHandle(); |
158 ExecuteAndDeleteLD(db->ExportLandmarksL(aLandmarkEncoder,aLandmarkIdArray, |
182 ExecuteAndDeleteLD(db->ExportLandmarksL(aLandmarkEncoder,aLandmarkIdArray, |
159 CPosLandmarkDatabase::EIncludeCategories)); |
183 CPosLandmarkDatabase::EIncludeCategories)); |
160 } |
184 } |
161 |
185 |
|
186 EXPORT_C void CLandmarkService::ExportL( TInt32 aTransactionId, |
|
187 CPosLandmarkEncoder& aLandmarkEncoder, |
|
188 const RArray<TPosLmItemId>& aLandmarkIdArray, |
|
189 const TDesC& aDestinationFile, |
|
190 const TDesC& aDatabaseUri ) const |
|
191 { |
|
192 CLandmarkHandler* handler = iManageHandler->GetHandlerL(aDatabaseUri); |
|
193 if (!handler) |
|
194 { |
|
195 handler = iManageHandler->CreateHandlerL(aDatabaseUri); |
|
196 } |
|
197 CPosLandmarkDatabase* db = handler->LandmarkDatabaseHandle(); |
|
198 CLandmarkOperation* exportAO = CLandmarkOperation::NewLC(iObserver, |
|
199 iManageObjects); |
|
200 exportAO->ExportL(aTransactionId,db,aLandmarkEncoder,aLandmarkIdArray,aDestinationFile); |
|
201 iManageObjects->AppendL(exportAO); |
|
202 CleanupStack::Pop(exportAO); |
|
203 } |
|
204 |
162 // ----------------------------------------------------------------------------- |
205 // ----------------------------------------------------------------------------- |
163 // CLandmarkService::GetListL( CPosLmItemIterator*& aIterator, |
206 // CLandmarkService::GetListL( CPosLmItemIterator*& aIterator, |
164 // const CLandmarkFilter* aFilter, const TDesC& aDatabaseUri ) const |
207 // const CLandmarkFilter* aFilter, const TDesC& aDatabaseUri ) const |
165 // Get a list of Landmarks/Categories from Database synchronously based on filter. |
208 // Get a list of Landmarks/Categories from Database synchronously based on filter. |
166 // ----------------------------------------------------------------------------- |
209 // ----------------------------------------------------------------------------- |
229 |
272 |
230 //Leave if observer has not been set for the async call. |
273 //Leave if observer has not been set for the async call. |
231 if ( !iObserver ) |
274 if ( !iObserver ) |
232 { |
275 { |
233 User::Leave(KErrGeneral); |
276 User::Leave(KErrGeneral); |
234 } |
|
235 |
|
236 if ( !iManageObjects ) |
|
237 { |
|
238 iManageObjects = CLandmarkManageObjects::NewL(); |
|
239 } |
277 } |
240 |
278 |
241 if ( aFilter.IsLandmark() ) |
279 if ( aFilter.IsLandmark() ) |
242 { |
280 { |
243 CLandmarkCmdBase* getLm = CLandmarkCmdGetLandmarks::NewLC(iObserver, |
281 CLandmarkCmdBase* getLm = CLandmarkCmdGetLandmarks::NewLC(iObserver, |
286 #endif |
324 #endif |
287 |
325 |
288 return db->AddLandmarkL(aLandmark); |
326 return db->AddLandmarkL(aLandmark); |
289 } |
327 } |
290 |
328 |
|
329 EXPORT_C void CLandmarkService::AddItemL(TInt32 aTransactionId, |
|
330 CPosLandmark& aLandmark, const TDesC& aDatabaseUri) |
|
331 { |
|
332 #ifdef _DEBUG |
|
333 iLog.Write(_L("CLandmarkService::AddItemL: Landmark: Async")); |
|
334 #endif |
|
335 |
|
336 //Leave if observer has not been set for the async call. |
|
337 if (!iObserver) |
|
338 { |
|
339 User::Leave(KErrGeneral); |
|
340 } |
|
341 |
|
342 TPosLmItemId id = 0; |
|
343 TRAPD(err,id = AddItemL(aLandmark,aDatabaseUri)); |
|
344 CLandmarkDummyAO* addLm = new (ELeave) CLandmarkDummyAO(iObserver, |
|
345 iManageObjects); |
|
346 CleanupStack::PushL(addLm); |
|
347 addLm->Start(aTransactionId, CLandmarkDummyAO::EAdd, id, err); |
|
348 iManageObjects->AppendL(addLm); |
|
349 CleanupStack::Pop(addLm); |
|
350 #ifdef _DEBUG |
|
351 iLog.Write(_L("CLandmarkService::AddItemL: Landmark: Async: Exit")); |
|
352 #endif |
|
353 } |
291 // ----------------------------------------------------------------------------- |
354 // ----------------------------------------------------------------------------- |
292 // CLandmarkService::AddItemL( CPosLandmarkCategory& aCategory,const TDesC& aDatabaseUri ) |
355 // CLandmarkService::AddItemL( CPosLandmarkCategory& aCategory,const TDesC& aDatabaseUri ) |
293 // Adds a landmark category to the given database. |
356 // Adds a landmark category to the given database. |
294 // ----------------------------------------------------------------------------- |
357 // ----------------------------------------------------------------------------- |
295 // |
358 // |
311 iLog.Write(_L("CLandmarkService::AddItemL: Category: Exit")); |
374 iLog.Write(_L("CLandmarkService::AddItemL: Category: Exit")); |
312 #endif |
375 #endif |
313 |
376 |
314 return cat->AddCategoryL(aCategory); |
377 return cat->AddCategoryL(aCategory); |
315 } |
378 } |
|
379 EXPORT_C void CLandmarkService::AddItemL(TInt32 aTransactionId, |
|
380 CPosLandmarkCategory& aCategory, const TDesC& aDatabaseUri) |
|
381 { |
|
382 #ifdef _DEBUG |
|
383 iLog.Write(_L("CLandmarkService::AddItemL: Category: Async")); |
|
384 #endif |
|
385 |
|
386 //Leave if observer has not been set for the async call. |
|
387 if (!iObserver) |
|
388 { |
|
389 User::Leave(KErrGeneral); |
|
390 } |
|
391 |
|
392 TPosLmItemId id = 0; |
|
393 TRAPD(err,id = AddItemL(aCategory,aDatabaseUri)); |
|
394 CLandmarkDummyAO* addCat = new (ELeave) CLandmarkDummyAO(iObserver, |
|
395 iManageObjects); |
|
396 CleanupStack::PushL(addCat); |
|
397 addCat->Start(aTransactionId, CLandmarkDummyAO::EAdd, id, err); |
|
398 iManageObjects->AppendL(addCat); |
|
399 CleanupStack::Pop(addCat); |
|
400 #ifdef _DEBUG |
|
401 iLog.Write(_L("CLandmarkService::AddItemL: Category: Async: Exit")); |
|
402 #endif |
|
403 } |
316 // ----------------------------------------------------------------------------- |
404 // ----------------------------------------------------------------------------- |
317 // CLandmarkService::AddItemL( CPosLandmarkCategory& aCategory,const TDesC& aDatabaseUri ) |
405 // CLandmarkService::AddItemL( CPosLandmarkCategory& aCategory,const TDesC& aDatabaseUri ) |
318 // Adds a landmark category to the given database. |
406 // Adds a landmark category to the given database. |
319 // ----------------------------------------------------------------------------- |
407 // ----------------------------------------------------------------------------- |
320 // |
408 // |
364 #ifdef _DEBUG |
452 #ifdef _DEBUG |
365 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark:Exit")); |
453 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark:Exit")); |
366 #endif |
454 #endif |
367 } |
455 } |
368 |
456 |
|
457 EXPORT_C void CLandmarkService::UpdateItemL(TInt32 aTransactionId, |
|
458 const CPosLandmark& aLandmark, const TDesC& aDatabaseUri) |
|
459 { |
|
460 #ifdef _DEBUG |
|
461 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark: Async")); |
|
462 #endif |
|
463 |
|
464 //Leave if observer has not been set for the async call. |
|
465 if (!iObserver) |
|
466 { |
|
467 User::Leave(KErrGeneral); |
|
468 } |
|
469 |
|
470 //start async now |
|
471 TPosLmItemId id = 0; |
|
472 TRAPD(err,UpdateItemL(aLandmark,aDatabaseUri)); |
|
473 CLandmarkDummyAO* updateLm = new (ELeave) CLandmarkDummyAO(iObserver, |
|
474 iManageObjects); |
|
475 CleanupStack::PushL(updateLm); |
|
476 updateLm->Start(aTransactionId, CLandmarkDummyAO::EUpdate, id, err); |
|
477 iManageObjects->AppendL(updateLm); |
|
478 CleanupStack::Pop(updateLm); |
|
479 #ifdef _DEBUG |
|
480 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark: Async: Exit")); |
|
481 #endif |
|
482 } |
369 // ----------------------------------------------------------------------------- |
483 // ----------------------------------------------------------------------------- |
370 // CLandmarkService::UpdateItemL( const CPosLandmarkCategory& aCategory, |
484 // CLandmarkService::UpdateItemL( const CPosLandmarkCategory& aCategory, |
371 // const TDesC& aDatabaseUri ) |
485 // const TDesC& aDatabaseUri ) |
372 // Updates a landmark Category in the given database. |
486 // Updates a landmark Category in the given database. |
373 // ----------------------------------------------------------------------------- |
487 // ----------------------------------------------------------------------------- |
388 cat->UpdateCategoryL(aCategory); |
502 cat->UpdateCategoryL(aCategory); |
389 |
503 |
390 #ifdef _DEBUG |
504 #ifdef _DEBUG |
391 iLog.Write(_L("CLandmarkService::UpdateItemL: Category; Exit")); |
505 iLog.Write(_L("CLandmarkService::UpdateItemL: Category; Exit")); |
392 #endif |
506 #endif |
|
507 } |
|
508 |
|
509 EXPORT_C void CLandmarkService::UpdateItemL(TInt32 aTransactionId, |
|
510 const CPosLandmarkCategory& aCategory, const TDesC& aDatabaseUri) |
|
511 { |
|
512 #ifdef _DEBUG |
|
513 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark: Async")); |
|
514 #endif |
|
515 |
|
516 //Leave if observer has not been set for the async call. |
|
517 if (!iObserver) |
|
518 { |
|
519 User::Leave(KErrGeneral); |
|
520 } |
|
521 |
|
522 //start async now |
|
523 TPosLmItemId id = 0; |
|
524 TRAPD(err,UpdateItemL(aCategory,aDatabaseUri)); |
|
525 CLandmarkDummyAO* updateCat = new (ELeave) CLandmarkDummyAO(iObserver, |
|
526 iManageObjects); |
|
527 CleanupStack::PushL(updateCat); |
|
528 updateCat->Start(aTransactionId, CLandmarkDummyAO::EUpdate, id, err); |
|
529 iManageObjects->AppendL(updateCat); |
|
530 CleanupStack::Pop(updateCat); |
|
531 #ifdef _DEBUG |
|
532 iLog.Write(_L("CLandmarkService::UpdateItemL: Landmark: Async: Exit")); |
|
533 #endif |
393 } |
534 } |
394 |
535 |
395 // ----------------------------------------------------------------------------- |
536 // ----------------------------------------------------------------------------- |
396 // CLandmarkService::UpdateItemL( TPosLmDatabaseSettings aSettings, const TDesC& aDatabaseUri ) |
537 // CLandmarkService::UpdateItemL( TPosLmDatabaseSettings aSettings, const TDesC& aDatabaseUri ) |
397 // Updates the database information in the given database. |
538 // Updates the database information in the given database. |
533 #ifdef _DEBUG |
674 #ifdef _DEBUG |
534 iLog.Write(_L("CLandmarkService::RemoveItemL:exit")); |
675 iLog.Write(_L("CLandmarkService::RemoveItemL:exit")); |
535 #endif |
676 #endif |
536 } |
677 } |
537 |
678 |
|
679 EXPORT_C void CLandmarkService::RemoveItemL(TInt32 aTransactionId, |
|
680 TPosLmItemId aItemId, TPosItem aItemIsLandmark, |
|
681 const TDesC& aDatabaseUri) |
|
682 { |
|
683 #ifdef _DEBUG |
|
684 iLog.Write(_L("CLandmarkService::RemoveItemL: Async")); |
|
685 #endif |
|
686 |
|
687 //Leave if observer has not been set for the async call. |
|
688 if (!iObserver) |
|
689 { |
|
690 User::Leave(KErrGeneral); |
|
691 } |
|
692 |
|
693 TPosLmItemId id = 0; |
|
694 TRAPD(err,RemoveItemL(aItemId,aItemIsLandmark,aDatabaseUri)); |
|
695 CLandmarkDummyAO* rem = new (ELeave) CLandmarkDummyAO(iObserver, |
|
696 iManageObjects); |
|
697 CleanupStack::PushL(rem); |
|
698 rem->Start(aTransactionId, CLandmarkDummyAO::ERemove, id, err); |
|
699 iManageObjects->AppendL(rem); |
|
700 CleanupStack::Pop(rem); |
|
701 #ifdef _DEBUG |
|
702 iLog.Write(_L("CLandmarkService::RemoveItemL: Async: Exit")); |
|
703 #endif |
|
704 } |
538 // ----------------------------------------------------------------------------- |
705 // ----------------------------------------------------------------------------- |
539 // CLandmarkService::RemoveItemL( const TDesC& aDatabaseUri ) |
706 // CLandmarkService::RemoveItemL( const TDesC& aDatabaseUri ) |
540 // Removes the given database. |
707 // Removes the given database. |
541 // ----------------------------------------------------------------------------- |
708 // ----------------------------------------------------------------------------- |
542 // |
709 // |
610 #ifdef _DEBUG |
777 #ifdef _DEBUG |
611 iLog.Write(_L("CLandmarkService::LinkCategoryToLandmarksL: Exit")); |
778 iLog.Write(_L("CLandmarkService::LinkCategoryToLandmarksL: Exit")); |
612 #endif |
779 #endif |
613 } |
780 } |
614 |
781 |
|
782 EXPORT_C void CLandmarkService::LinkCategoryToLandmarksL(TInt32 aTransactionId, |
|
783 TPosLmItemId aCategoryId, RArray<TPosLmItemId>& aLandmarkIdArray, |
|
784 const TDesC& aDatabaseUri) |
|
785 { |
|
786 #ifdef _DEBUG |
|
787 iLog.Write(_L("CLandmarkService::LinkCategoryToLandmarksL :Async")); |
|
788 #endif |
|
789 //Leave if observer has not been set for the async call. |
|
790 if (!iObserver) |
|
791 { |
|
792 User::Leave(KErrGeneral); |
|
793 } |
|
794 |
|
795 CLandmarkHandler* handler = iManageHandler->GetHandlerL(aDatabaseUri); |
|
796 if (!handler) |
|
797 { |
|
798 handler = iManageHandler->CreateHandlerL(aDatabaseUri); |
|
799 } |
|
800 CPosLmCategoryManager* cat = handler->CategoryManagerHandle(); |
|
801 CLandmarkOperation* linkCat = CLandmarkOperation::NewLC(iObserver, |
|
802 iManageObjects); |
|
803 linkCat->LinkL(aTransactionId,aCategoryId,aLandmarkIdArray,cat); |
|
804 iManageObjects->AppendL(linkCat); |
|
805 CleanupStack::Pop(linkCat); |
|
806 #ifdef _DEBUG |
|
807 iLog.Write(_L("CLandmarkService::LinkCategoryToLandmarksL: Async: Exit")); |
|
808 #endif |
|
809 } |
615 // ----------------------------------------------------------------------------- |
810 // ----------------------------------------------------------------------------- |
616 // CLandmarkService::UnlinkCategoryToLandmarksL( TPosLmItemId aCategoryId, |
811 // CLandmarkService::UnlinkCategoryToLandmarksL( TPosLmItemId aCategoryId, |
617 // RArray< TPosLmItemId >& aLandmarkIdArray, const TDesC& aDatabaseUri ) |
812 // RArray< TPosLmItemId >& aLandmarkIdArray, const TDesC& aDatabaseUri ) |
618 // associates a category to a set of landmarks. |
813 // associates a category to a set of landmarks. |
619 // ----------------------------------------------------------------------------- |
814 // ----------------------------------------------------------------------------- |
634 CPosLmCategoryManager* cat = handler->CategoryManagerHandle(); |
829 CPosLmCategoryManager* cat = handler->CategoryManagerHandle(); |
635 ExecuteAndDeleteLD(cat->RemoveCategoryFromLandmarksL(aCategoryId,aLandmarkIdArray)); |
830 ExecuteAndDeleteLD(cat->RemoveCategoryFromLandmarksL(aCategoryId,aLandmarkIdArray)); |
636 |
831 |
637 #ifdef _DEBUG |
832 #ifdef _DEBUG |
638 iLog.Write(_L("CLandmarkService::UnlinkCategoryToLandmarksL: Exit")); |
833 iLog.Write(_L("CLandmarkService::UnlinkCategoryToLandmarksL: Exit")); |
|
834 #endif |
|
835 } |
|
836 |
|
837 EXPORT_C void CLandmarkService::UnlinkCategoryToLandmarksL(TInt32 aTransactionId, |
|
838 TPosLmItemId aCategoryId, RArray<TPosLmItemId>& aLandmarkIdArray, |
|
839 const TDesC& aDatabaseUri) |
|
840 { |
|
841 #ifdef _DEBUG |
|
842 iLog.Write(_L("CLandmarkService::UnlinkCategoryToLandmarksL :Async")); |
|
843 #endif |
|
844 //Leave if observer has not been set for the async call. |
|
845 if (!iObserver) |
|
846 { |
|
847 User::Leave(KErrGeneral); |
|
848 } |
|
849 |
|
850 CLandmarkHandler* handler = iManageHandler->GetHandlerL(aDatabaseUri); |
|
851 if (!handler) |
|
852 { |
|
853 handler = iManageHandler->CreateHandlerL(aDatabaseUri); |
|
854 } |
|
855 CPosLmCategoryManager* cat = handler->CategoryManagerHandle(); |
|
856 CLandmarkOperation* linkCat = CLandmarkOperation::NewLC(iObserver, |
|
857 iManageObjects); |
|
858 linkCat->UnLinkL(aTransactionId,aCategoryId,aLandmarkIdArray,cat); |
|
859 iManageObjects->AppendL(linkCat); |
|
860 CleanupStack::Pop(linkCat); |
|
861 #ifdef _DEBUG |
|
862 iLog.Write(_L("CLandmarkService::UnlinkCategoryToLandmarksL: Async: Exit")); |
639 #endif |
863 #endif |
640 } |
864 } |
641 |
865 |
642 // ----------------------------------------------------------------------------- |
866 // ----------------------------------------------------------------------------- |
643 // CLandmarkService::RegisterObserver( MLandmarkObserver* aObserver ) |
867 // CLandmarkService::RegisterObserver( MLandmarkObserver* aObserver ) |