locationtriggering/ltcontainer/src/lbtdbtriggersmanager.cpp
changeset 43 24e118dfbea1
parent 39 3efc7a0e8755
child 50 4c28d569e1fe
equal deleted inserted replaced
39:3efc7a0e8755 43:24e118dfbea1
   362     
   362     
   363     switch(iOperationState)
   363     switch(iOperationState)
   364         {
   364         {
   365         case EOpStateQuery:
   365         case EOpStateQuery:
   366             {
   366             {
   367             iView.FirstL();
   367              
   368             // check if view is empty, return KErrNotFound
   368             // check if view is empty, return KErrNotFound
   369             if( iView.IsEmptyL() || !iView.AtRow() )
   369             if( iView.IsEmptyL() || !iView.AtRow() || !iView.FirstL() )
   370                 {
   370                 {
   371                 CompleteClientRequest( KErrNotFound );
   371                 CompleteClientRequest( KErrNotFound );
   372                 break;
   372                 break;
   373                 }       
   373                 }       
   374             // Start iterating through all the triggers in view            
   374             // Start iterating through all the triggers in view            
   375             iOperationState = EOpStateIterating;
   375             iOperationState = EOpStateIterating;
   376             iView.FirstL();
   376                        
   377             }
   377             }
   378             // Omitting break is intentional
   378             // Omitting break is intentional
   379        case EOpStateIterating:
   379        case EOpStateIterating:
   380             {  
   380             {  
   381             TPtr sql = iSqlQuery->Des();
   381             TPtr sql = iSqlQuery->Des();
   761     switch(iOperationState)
   761     switch(iOperationState)
   762         {
   762         {
   763         case EOpStateQuery:
   763         case EOpStateQuery:
   764             {
   764             {
   765             // check if view is empty, return KErrNotFound
   765             // check if view is empty, return KErrNotFound
   766             if( iView.IsEmptyL() )
   766             if( iView.IsEmptyL() || !iView.FirstL())
   767                 {
   767                 {
   768                 CompleteClientRequest( KErrNotFound );
   768                 CompleteClientRequest( KErrNotFound );
   769                 break;
   769                 break;
   770                 }       
   770                 }       
   771             // Start iterating through all the triggers in view            
   771             // Start iterating through all the triggers in view            
   772             iOperationState = EOpStateIterating;
   772             iOperationState = EOpStateIterating;
   773             iView.FirstL();
   773            
   774             }
   774             }
   775             // Omitting break is intentional
   775             // Omitting break is intentional
   776         case EOpStateIterating:
   776         case EOpStateIterating:
   777             {            
   777             {            
   778             TUid ownerSid;
   778             TUid ownerSid;
   833                              iCountOfEnabledAndValidTrigger--;
   833                              iCountOfEnabledAndValidTrigger--;
   834                              }
   834                              }
   835                         }
   835                         }
   836                     CleanupStack::PopAndDestroy(entry);
   836                     CleanupStack::PopAndDestroy(entry);
   837                     }       
   837                     }       
   838                 iView.NextL();       
   838                  TBool res =iView.NextL();   
   839                 }
   839                  if (!res)
       
   840                  	break;
       
   841               }
   840             
   842             
   841             if( count >= KStepCount )
   843             if( count >= KStepCount )
   842                 {
   844                 {
   843                 // Self complete to process next request
   845                 // Self complete to process next request
   844                 SelfComplete();
   846                 SelfComplete();
   867     switch( iOperationState )
   869     switch( iOperationState )
   868         {
   870         {
   869         case EOpStateQuery:
   871         case EOpStateQuery:
   870             {
   872             {
   871             // check if view is empty, return KErrNotFound
   873             // check if view is empty, return KErrNotFound
   872             if( iView.IsEmptyL() )
   874             if( iView.IsEmptyL() || !iView.FirstL())
   873                 {
   875                 {
   874                 CompleteClientRequest( KErrNotFound );
   876                 CompleteClientRequest( KErrNotFound );
   875                 break;
   877                 break;
   876                 }
   878                 }
   877             
   879             
   878             // Start iterating through all the triggers in view            
   880             // Start iterating through all the triggers in view            
   879             iOperationState = EOpStateIterating;
   881             iOperationState = EOpStateIterating;
   880             iView.FirstL();
   882             
       
   883             
   881             }
   884             }
   882             // Omitting break is intentional
   885             // Omitting break is intentional
   883         case EOpStateIterating:
   886         case EOpStateIterating:
   884             {
   887             {
   885             TInt count = 0;
   888             TInt count = 0;
   922                             // TODO: Check if this will crash
   925                             // TODO: Check if this will crash
   923                             DeleteTriggerL( entry->TriggerEntry()->Id() );
   926                             DeleteTriggerL( entry->TriggerEntry()->Id() );
   924                             }
   927                             }
   925                         CleanupStack::PopAndDestroy( entry );
   928                         CleanupStack::PopAndDestroy( entry );
   926                         }
   929                         }
   927                     iView.NextL();
   930                     
       
   931                      TBool res = iView.NextL();
       
   932                       if(!res)
       
   933             	         break;
   928                     }                
   934                     }                
   929                 }
   935                 }
   930 
   936 
   931             if( !iView.AtRow() )
   937             if( !iView.AtRow() )
   932                 {
   938                 {
   980                 {
   986                 {
   981                 delete entry;
   987                 delete entry;
   982                 }
   988                 }
   983             }
   989             }
   984 
   990 
   985         iView.NextL();
   991         if(!iView.NextL())
       
   992         	break;
   986         }
   993         }
   987 
   994 
   988     if( count >= KStepCount )
   995     if( count >= KStepCount )
   989         {
   996         {
   990         // Self complete to process next request
   997         // Self complete to process next request
  1319     iCurrentOperation = EDbOpGetTriggers;
  1326     iCurrentOperation = EDbOpGetTriggers;
  1320     // Prepare view for triggers
  1327     // Prepare view for triggers
  1321     PrepareViewForTriggersL( aTriggerIds, iView );
  1328     PrepareViewForTriggersL( aTriggerIds, iView );
  1322  
  1329  
  1323     // rest of list triggers operation is in the method HandleGetTriggersEventL.
  1330     // rest of list triggers operation is in the method HandleGetTriggersEventL.
  1324     iView.FirstL();
  1331    if(!iView.FirstL())
       
  1332    {
       
  1333    	CompleteClientRequest( KErrNotFound );
       
  1334 	return;
       
  1335 	}
  1325     SelfComplete();
  1336     SelfComplete();
  1326 	}
  1337 	}
  1327 
  1338 
  1328 // ---------------------------------------------------------------------------
  1339 // ---------------------------------------------------------------------------
  1329 // List the triggers in database based on filter
  1340 // List the triggers in database based on filter
  1393 
  1404 
  1394     // Prepare view for listing
  1405     // Prepare view for listing
  1395     PrepareViewForListingL( iView );
  1406     PrepareViewForListingL( iView );
  1396     
  1407     
  1397     // rest of list triggers operation is in the method HandleListTriggersEventL.
  1408     // rest of list triggers operation is in the method HandleListTriggersEventL.
  1398     iView.FirstL();
  1409     
       
  1410 	if(!iView.FirstL())
       
  1411    {
       
  1412    	CompleteClientRequest( KErrNotFound );
       
  1413 	return;
       
  1414 	}
  1399     iFilterBase = LbtContainerUtilities::GetContainerFilterFromListOptionsLC(iFilter);
  1415     iFilterBase = LbtContainerUtilities::GetContainerFilterFromListOptionsLC(iFilter);
  1400     CleanupStack::Pop(1); // iFilterBase
  1416     CleanupStack::Pop(1); // iFilterBase
  1401     
  1417     
  1402     SelfComplete();    
  1418     SelfComplete();    
  1403     }
  1419     }
  1505     
  1521     
  1506     sql.Append( KLike );
  1522     sql.Append( KLike );
  1507     sql.AppendNum( aTriggerId );
  1523     sql.AppendNum( aTriggerId );
  1508     
  1524     
  1509     // Execute the query to delete the entry
  1525     // Execute the query to delete the entry
  1510     iDbOperation->ExecuteSyncQuery( view, sql );
  1526     TInt err =iDbOperation->ExecuteSyncQuery( view, sql );
  1511    	view.Close();
  1527     if( err != KErrNone )
  1512     }
  1528     	{
       
  1529     		LOG("err");
       
  1530     	}
       
  1531  	   	view.Close();
       
  1532        }
  1513 
  1533 
  1514 //---------------------------------------------------------------------------
  1534 //---------------------------------------------------------------------------
  1515 // CLbtDbTriggersManager::AddGeoCellIntoDbL
  1535 // CLbtDbTriggersManager::AddGeoCellIntoDbL
  1516 //---------------------------------------------------------------------------
  1536 //---------------------------------------------------------------------------
  1517 //        
  1537 //        
  1757         return;
  1777         return;
  1758         }
  1778         }
  1759 
  1779 
  1760     iIdArray.Reset();
  1780     iIdArray.Reset();
  1761     RDbView view;
  1781     RDbView view;
       
  1782      CleanupClosePushL( view );
  1762     PrepareViewForTriggersL( aTriggerIds, view );
  1783     PrepareViewForTriggersL( aTriggerIds, view );
  1763     
  1784     if(!view.FirstL())
  1764     CleanupClosePushL( view );
  1785 	   {
  1765     view.FirstL();
  1786 	     CompleteClientRequest( KErrNotFound );
       
  1787        return;
       
  1788 	   }
       
  1789    
       
  1790     
  1766     while(view.AtRow())
  1791     while(view.AtRow())
  1767         {
  1792         {
  1768         view.GetL();
  1793         view.GetL();
  1769         TLbtTriggerId triggerId = view.ColInt64(ELbtDbFieldId);
  1794         TLbtTriggerId triggerId = view.ColInt64(ELbtDbFieldId);
  1770         TInt index = aTriggerIds.Find(triggerId);
  1795         TInt index = aTriggerIds.Find(triggerId);
  1813                         iCountOfEnabledAndValidTrigger--;
  1838                         iCountOfEnabledAndValidTrigger--;
  1814                         }
  1839                         }
  1815                     }
  1840                     }
  1816                 }
  1841                 }
  1817             }
  1842             }
  1818         view.NextL();
  1843         if(!view.NextL())
       
  1844         	break;
  1819         }
  1845         }
  1820     CleanupStack::PopAndDestroy(); // view
  1846     CleanupStack::PopAndDestroy(); // view
  1821     User::RequestComplete( status, KErrNone );
  1847     User::RequestComplete( status, KErrNone );
  1822     }
  1848     }
  1823 
  1849 
  1851     RDbView view;
  1877     RDbView view;
  1852     PrepareViewForTriggersL( aTriggerIds, view );
  1878     PrepareViewForTriggersL( aTriggerIds, view );
  1853 
  1879 
  1854   	TBool found = EFalse;
  1880   	TBool found = EFalse;
  1855   	CleanupClosePushL( view );
  1881   	CleanupClosePushL( view );
  1856   	view.FirstL();
  1882   	
       
  1883 	if(!view.FirstL())
       
  1884 	{
       
  1885 	CompleteClientRequest( KErrNotFound );
       
  1886     return;
       
  1887 	}
  1857   	while(view.AtRow())
  1888   	while(view.AtRow())
  1858     	{
  1889     	{
  1859     	view.GetL();
  1890     	view.GetL();
  1860     	TLbtTriggerId triggerId = view.ColInt64(ELbtDbFieldId);
  1891     	TLbtTriggerId triggerId = view.ColInt64(ELbtDbFieldId);
  1861     	
  1892     	
  1868 	 	    	view.UpdateL();	
  1899 	 	    	view.UpdateL();	
  1869 	 	    	view.SetColL( ELbtDbFieldIsTriggerFired, aFireBool );
  1900 	 	    	view.SetColL( ELbtDbFieldIsTriggerFired, aFireBool );
  1870 	 	    	view.PutL();
  1901 	 	    	view.PutL();
  1871 	 	    	}
  1902 	 	    	}
  1872     		}
  1903     		}
  1873     	view.NextL();
  1904     	if(!view.NextL())
  1874     	}
  1905     		break;
       
  1906     			
       
  1907     }
  1875     CleanupStack::PopAndDestroy(); //view
  1908     CleanupStack::PopAndDestroy(); //view
  1876 
  1909 
  1877     TInt error = KErrNone;
  1910     TInt error = KErrNone;
  1878     if(!found)
  1911     if(!found)
  1879     	{
  1912     	{
  2034                 {
  2067                 {
  2035                 hybridView.Close();
  2068                 hybridView.Close();
  2036                 User::Leave(error);
  2069                 User::Leave(error);
  2037                 }
  2070                 }
  2038             CleanupClosePushL(hybridView);
  2071             CleanupClosePushL(hybridView);
  2039             hybridView.FirstL();
  2072             if(hybridView.FirstL())
       
  2073             	{
  2040             hybridView.GetL();
  2074             hybridView.GetL();
  2041             hybridView.DeleteL();
  2075             hybridView.DeleteL();
  2042             hybridView.Close();
  2076             hybridView.Close();
       
  2077               }
  2043             CleanupStack::PopAndDestroy(1); // hybridView            
  2078             CleanupStack::PopAndDestroy(1); // hybridView            
  2044             break;
  2079             break;
  2045             }
  2080             }
  2046         }
  2081         }
  2047 
  2082 
  2587 	    		{
  2622 	    		{
  2588 	    		delete entry;
  2623 	    		delete entry;
  2589 	    		}
  2624 	    		}
  2590     		}
  2625     		}
  2591 
  2626 
  2592     	iView.NextL();
  2627     	if(!iView.NextL())
       
  2628     		break;
  2593     	}
  2629     	}
  2594     
  2630     
  2595     if( count >= KStepCount )
  2631     if( count >= KStepCount )
  2596         {
  2632         {
  2597         // Self complete to process next request
  2633         // Self complete to process next request