browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp
changeset 5 10e98eab6f85
parent 1 7c90e6132015
child 10 a359256acfc6
equal deleted inserted replaced
1:7c90e6132015 5:10e98eab6f85
   295 // C++ default constructor can NOT contain any code that
   295 // C++ default constructor can NOT contain any code that
   296 // might leave.
   296 // might leave.
   297 // -----------------------------------------------------------------------------
   297 // -----------------------------------------------------------------------------
   298 //
   298 //
   299 CFeedsDatabase::CFeedsDatabase(CFeedsServer* aFeedsServer):
   299 CFeedsDatabase::CFeedsDatabase(CFeedsServer* aFeedsServer):
   300     iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer)
   300     iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer),iIsFolderTableUpdateNeeded(EFalse)
   301     {
   301     {
   302     }
   302     }
   303 
   303 
   304 
   304 
   305 // -----------------------------------------------------------------------------
   305 // -----------------------------------------------------------------------------
  1405     TInt  folderListId = 0;
  1405     TInt  folderListId = 0;
  1406     if (iFolderListTable.SeekL(folderListKey))
  1406     if (iFolderListTable.SeekL(folderListKey))
  1407         {
  1407         {
  1408         TBool  isFolder;
  1408         TBool  isFolder;
  1409     //    TInt   folderListId;
  1409     //    TInt   folderListId;
  1410         
  1410 
  1411         // Update the title in the folder list table.
  1411         // Update the title in the folder list table.
  1412         iFolderListTable.GetL();
  1412         iFolderListTable.GetL();
  1413         iFolderListTable.UpdateL();
  1413         iFolderListTable.UpdateL();
  1414         
  1414         
  1415         isFolder = iFolderListTable.ColUint8(iFolderListColSet->ColNo(KIsFolder));
  1415         isFolder = iFolderListTable.ColUint8(iFolderListColSet->ColNo(KIsFolder));
  1429             //    {
  1429             //    {
  1430             //    feedId = CommitFeedL(folderListId, aTitle, aUrl);
  1430             //    feedId = CommitFeedL(folderListId, aTitle, aUrl);
  1431             //    }
  1431             //    }
  1432 
  1432 
  1433 
  1433 
  1434 		    UseFeedTableLC(RDbTable::EUpdatable);
  1434             UseFeedTableLC(RDbTable::EUpdatable);
  1435 	        TDbSeekKey  seekKey((TUint16) feedId);
  1435             TDbSeekKey  seekKey((TUint16) feedId);
  1436         
  1436 
  1437         	if (iFeedTable.SeekL(seekKey))
  1437             if (iFeedTable.SeekL(seekKey))
  1438         	    {        
  1438                 {
  1439         	    iFeedTable.GetL();
  1439                 iFeedTable.GetL();
  1440         	    iFeedTable.UpdateL();
  1440                 iFeedTable.UpdateL();
  1441         	    }
  1441                 }
  1442         	else
  1442             else
  1443         	    {
  1443                 {
  1444         	    User::Leave(KErrCorrupt);
  1444                 User::Leave(KErrCorrupt);
  1445         	    }
  1445                 }
  1446 		    iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen));
  1446             iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen));
  1447     		WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl);
  1447             if (aUrl.Length() > 0)
       
  1448                 {
       
  1449                 WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl);
       
  1450                 }
  1448             iFeedTable.SetColL(iFeedColSet->ColNo(KAutoUpdateFreq), aFreq);
  1451             iFeedTable.SetColL(iFeedColSet->ColNo(KAutoUpdateFreq), aFreq);
  1449 			iFeedTable.PutL();
  1452             iFeedTable.PutL();
  1450 		    CleanupStack::PopAndDestroy(/*feed table*/);  
  1453             CleanupStack::PopAndDestroy(/*feed table*/);
  1451 		    // Set the feed id.
  1454             // Set the feed id.
  1452             //iFolderListTable.SetColL(iFolderListColSet->ColNo(KFeedId), feedId);
  1455             //iFolderListTable.SetColL(iFolderListColSet->ColNo(KFeedId), feedId);
  1453             }
  1456             }
  1454 
  1457 
  1455         iFolderListTable.PutL();
  1458         iFolderListTable.PutL();
  1456         if(feedId != KUnassignedId)
  1459         if(feedId != KUnassignedId)
  2779     WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KDescription), description);
  2782     WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KDescription), description);
  2780     WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KWebUrl), link);
  2783     WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KWebUrl), link);
  2781     iFeedTable.SetColL(iFeedColSet->ColNo(KUnreadCount), unreadCount);    
  2784     iFeedTable.SetColL(iFeedColSet->ColNo(KUnreadCount), unreadCount);    
  2782         
  2785         
  2783     iFeedTable.PutL();
  2786     iFeedTable.PutL();
  2784    
  2787 
       
  2788     if (iIsFolderTableUpdateNeeded)
       
  2789         {
       
  2790         //update the folder table.
       
  2791         TInt entryId;
       
  2792         EntryIdFromFeedId(aFeedId, aFolderListId, entryId);
       
  2793         FolderItemUpdateL(entryId, title, KNullDesC, KAutoUpdatingOff);
       
  2794         }
  2785     }
  2795     }
  2786 
  2796 
  2787 
  2797 
  2788 // -----------------------------------------------------------------------------
  2798 // -----------------------------------------------------------------------------
  2789 // CFeedsDatabase::CommitFeedL
  2799 // CFeedsDatabase::CommitFeedL
  4379           }
  4389           }
  4380 
  4390 
  4381     CleanupStack::PopAndDestroy(/* iFeedTable */);
  4391     CleanupStack::PopAndDestroy(/* iFeedTable */);
  4382     }
  4392     }
  4383 
  4393 
       
  4394 // -----------------------------------------------------------------------------
       
  4395 // CFeedsDatabase::FeedIdFromEntryId
       
  4396 //
       
  4397 // Returns the feed id of the feed with the given entry id.
       
  4398 // -----------------------------------------------------------------------------
       
  4399 //
       
  4400 TBool CFeedsDatabase::FeedIdFromEntryId(const TInt& aEntryId, TInt aFolderListId, TInt& aFeedId)
       
  4401     {
       
  4402     RDbView  view;
       
  4403     TBool    found = EFalse;
       
  4404     HBufC*   query = NULL;
       
  4405 
       
  4406     // Create a view given this select...
       
  4407     // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId
       
  4408     _LIT(KQuery, "SELECT FeedId FROM FolderListTable WHERE FolderItemId = %d AND FolderListId = %d");
       
  4409 
       
  4410     query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength );
       
  4411 
       
  4412     query->Des().Format( KQuery, aEntryId, aFolderListId );
       
  4413 
       
  4414     User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly));
       
  4415     CleanupClosePushL(view);
       
  4416 
       
  4417     CDbColSet* colSet = view.ColSetL();
       
  4418     CleanupStack::PushL(colSet);
       
  4419 
       
  4420     // Search for the feed.
       
  4421     if (view.Evaluate() >= 0)
       
  4422         {
       
  4423         if (view.FirstL())
       
  4424             {
       
  4425             // Get the feed id.
       
  4426             view.GetL();
       
  4427             aFeedId = view.ColUint16(colSet->ColNo(KFeedId));
       
  4428             found = ETrue;
       
  4429             }
       
  4430         }
       
  4431 
       
  4432     CleanupStack::PopAndDestroy(colSet);
       
  4433     CleanupStack::PopAndDestroy(/*view*/);
       
  4434     CleanupStack::PopAndDestroy(query);
       
  4435 
       
  4436     return found;
       
  4437     }
       
  4438 
       
  4439 // -----------------------------------------------------------------------------
       
  4440 // CFeedsDatabase::EntryIdFromFeedId
       
  4441 //
       
  4442 // Returns the feed id of the feed with the given entry id.
       
  4443 // -----------------------------------------------------------------------------
       
  4444 //
       
  4445 TBool CFeedsDatabase::EntryIdFromFeedId(const TInt& aFeedId, TInt aFolderListId, TInt& aEntryId)
       
  4446     {
       
  4447     RDbView  view;
       
  4448     TBool    found = EFalse;
       
  4449     HBufC*   query = NULL;
       
  4450 
       
  4451     // Create a view given this select...
       
  4452     // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId
       
  4453     _LIT(KQuery, "SELECT FolderItemId FROM FolderListTable WHERE FeedId = %d AND FolderListId = %d");
       
  4454 
       
  4455     query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength );
       
  4456 
       
  4457     query->Des().Format( KQuery, aFeedId, aFolderListId );
       
  4458 
       
  4459     User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly));
       
  4460     CleanupClosePushL(view);
       
  4461 
       
  4462     CDbColSet* colSet = view.ColSetL();
       
  4463     CleanupStack::PushL(colSet);
       
  4464 
       
  4465     // Search for the feed.
       
  4466     if (view.Evaluate() >= 0)
       
  4467         {
       
  4468         if (view.FirstL())
       
  4469             {
       
  4470             // Get the feed id.
       
  4471             view.GetL();
       
  4472             aEntryId = view.ColUint16(colSet->ColNo(KFolderItemId));
       
  4473             found = ETrue;
       
  4474             }
       
  4475         }
       
  4476 
       
  4477     CleanupStack::PopAndDestroy(colSet);
       
  4478     CleanupStack::PopAndDestroy(/*view*/);
       
  4479     CleanupStack::PopAndDestroy(query);
       
  4480 
       
  4481     return found;
       
  4482     }
       
  4483 
  4384 #if defined(_DEBUG)
  4484 #if defined(_DEBUG)
  4385 // -----------------------------------------------------------------------------
  4485 // -----------------------------------------------------------------------------
  4386 // CFeedsDatabase::DebugPrintTables
  4486 // CFeedsDatabase::DebugPrintTables
  4387 //
  4487 //
  4388 // Prints the tables to the log file.
  4488 // Prints the tables to the log file.