engine/src/FeedEngine.cpp
branchsymbian1
changeset 340 37610dda6102
parent 336 3d6c1417e8bd
child 349 4538abb763e4
equal deleted inserted replaced
338:cfd0b92a31b5 340:37610dda6102
    51 	iFeedTimer.ConstructL();
    51 	iFeedTimer.ConstructL();
    52 	
    52 	
    53 	TInt err = KErrNone;
    53 	TInt err = KErrNone;
    54 	TInt feedCount = 0;
    54 	TInt feedCount = 0;
    55 	
    55 	
       
    56 	DBEnsureFileSizeFieldExists();
       
    57 	
    56 	TRAP(err, feedCount = DBGetFeedCountL());
    58 	TRAP(err, feedCount = DBGetFeedCountL());
    57     if (err == KErrNone && feedCount > 0)
    59     if (err == KErrNone && feedCount > 0)
    58     	{
    60     	{
    59 		DP("Loading feeds from DB");
    61 		DP("Loading feeds from DB");
    60 		TRAP(err, DBLoadFeedsL());
    62 		TRAP(err, DBLoadFeedsL());
   408 	HBufC* descBuf = HBufC::NewLC(KMaxLineLength);
   410 	HBufC* descBuf = HBufC::NewLC(KMaxLineLength);
   409 	TPtr descPtr(descBuf->Des());
   411 	TPtr descPtr(descBuf->Des());
   410 	descPtr.Copy(aItem.Description());
   412 	descPtr.Copy(aItem.Description());
   411 	PodcastUtils::SQLEncode(descPtr);
   413 	PodcastUtils::SQLEncode(descPtr);
   412 	
   414 	
   413 	_LIT(KSqlStatement, "insert into feeds (url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror) values (\"%S\",\"%S\", \"%S\", \"%S\", \"%S\", \"%S\", \"%Ld\", \"%Ld\", \"%u\", \"%u\", \"%u\", \"%d\")");
   415 	_LIT(KSqlStatement, "insert into feeds (url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror, filesize) values (\"%S\",\"%S\", \"%S\", \"%S\", \"%S\", \"%S\", \"%Ld\", \"%Ld\", \"%u\", \"%u\", \"%u\", \"%d\", \"%d\")");
   414 	iSqlBuffer.Format(KSqlStatement,
   416 	iSqlBuffer.Format(KSqlStatement,
   415 			&aItem.Url(), titleBuf, descBuf, &aItem.ImageUrl(), &aItem.ImageFileName(), &aItem.Link(),
   417 			&aItem.Url(), titleBuf, descBuf, &aItem.ImageUrl(), &aItem.ImageFileName(), &aItem.Link(),
   416 			aItem.BuildDate().Int64(), aItem.LastUpdated().Int64(), aItem.Uid(), EAudioPodcast, aItem.CustomTitle(), aItem.LastError());
   418 			aItem.BuildDate().Int64(), aItem.LastUpdated().Int64(), aItem.Uid(), EAudioPodcast, aItem.CustomTitle(), aItem.LastError(), aItem.FeedFileSize());
   417 
   419 
   418 	CleanupStack::PopAndDestroy(descBuf);
   420 	CleanupStack::PopAndDestroy(descBuf);
   419 	CleanupStack::PopAndDestroy(titleBuf);
   421 	CleanupStack::PopAndDestroy(titleBuf);
   420 	
   422 	
   421 	sqlite3_stmt *st;
   423 	sqlite3_stmt *st;
   521 	
   523 	
   522 	HBufC* descBuf = HBufC::NewLC(KMaxLineLength);
   524 	HBufC* descBuf = HBufC::NewLC(KMaxLineLength);
   523 	TPtr descPtr(descBuf->Des());
   525 	TPtr descPtr(descBuf->Des());
   524 	descPtr.Copy(aItem.Description());
   526 	descPtr.Copy(aItem.Description());
   525 	PodcastUtils::SQLEncode(descPtr);
   527 	PodcastUtils::SQLEncode(descPtr);
   526 	
   528 	_LIT(KSqlStatement, "update feeds set url=\"%S\", title=\"%S\", description=\"%S\", imageurl=\"%S\", imagefile=\"%S\", link=\"%S\", built=\"%Lu\", lastupdated=\"%Lu\", feedtype=\"%u\", customtitle=\"%u\", lasterror=\"%d\", filesize=\"%d\" where uid=\"%u\"");
   527 	_LIT(KSqlStatement, "update feeds set url=\"%S\", title=\"%S\", description=\"%S\", imageurl=\"%S\", imagefile=\"%S\", link=\"%S\", built=\"%Lu\", lastupdated=\"%Lu\", feedtype=\"%u\", customtitle=\"%u\", lasterror=\"%d\" where uid=\"%u\"");
       
   528 	iSqlBuffer.Format(KSqlStatement,
   529 	iSqlBuffer.Format(KSqlStatement,
   529 			&aItem.Url(), titleBuf, descBuf, &aItem.ImageUrl(), &aItem.ImageFileName(), &aItem.Link(),
   530 			&aItem.Url(), titleBuf, descBuf, &aItem.ImageUrl(), &aItem.ImageFileName(), &aItem.Link(),
   530 			aItem.BuildDate().Int64(), aItem.LastUpdated().Int64(), EAudioPodcast, aItem.CustomTitle(), aItem.LastError(), aItem.Uid());
   531 			aItem.BuildDate().Int64(), aItem.LastUpdated().Int64(), EAudioPodcast, aItem.CustomTitle(), aItem.LastError(), aItem.FeedFileSize(), aItem.Uid());
   531 
   532 
   532 	CleanupStack::PopAndDestroy(descBuf);
   533 	CleanupStack::PopAndDestroy(descBuf);
   533 	CleanupStack::PopAndDestroy(titleBuf);
   534 	CleanupStack::PopAndDestroy(titleBuf);
   534 	
   535 	
   535 	sqlite3_stmt *st;
   536 	sqlite3_stmt *st;
   728 	{
   729 	{
   729 	}
   730 	}
   730 
   731 
   731 void CFeedEngine::DownloadInfo(CHttpClient* /*aHttpClient */, int /*aTotalBytes*/)
   732 void CFeedEngine::DownloadInfo(CHttpClient* /*aHttpClient */, int /*aTotalBytes*/)
   732 	{	
   733 	{	
       
   734 	
       
   735 	}
       
   736 
       
   737 void CFeedEngine::DBEnsureFileSizeFieldExists()
       
   738 	{
       
   739 	DP("DBEnsureFileSizeFieldExists BEGIN");
       
   740 	sqlite3_stmt *st;
       
   741 	int rc = sqlite3_prepare_v2(&iDB,"alter table feeds add column filesize int" , -1, &st, (const char**) NULL);
       
   742 	DP1("    rc=%d", rc);
       
   743 	 
       
   744 	if( rc==SQLITE_OK )
       
   745 		{
       
   746 		Cleanup_sqlite3_finalize_PushL(st);
       
   747 		rc = sqlite3_step(st);
       
   748 		DP1("    rc=%d", rc);
       
   749 		CleanupStack::PopAndDestroy(); // st
       
   750 		}
       
   751 
       
   752 	DP("DBEnsureFileSizeFieldExists END");
   733 	}
   753 	}
   734 
   754 
   735 EXPORT_C void CFeedEngine::ImportFeedsL(const TDesC& aFile)
   755 EXPORT_C void CFeedEngine::ImportFeedsL(const TDesC& aFile)
   736 	{
   756 	{
   737 	TFileName opmlPath;
   757 	TFileName opmlPath;
   946 	{
   966 	{
   947 	DP("DBLoadFeeds BEGIN");
   967 	DP("DBLoadFeeds BEGIN");
   948 	iSortedFeeds.Reset();
   968 	iSortedFeeds.Reset();
   949 	CFeedInfo *feedInfo = NULL;
   969 	CFeedInfo *feedInfo = NULL;
   950 	
   970 	
   951 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror from feeds");
   971 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror, filesize from feeds");
   952 	iSqlBuffer.Format(KSqlStatement);
   972 	iSqlBuffer.Format(KSqlStatement);
   953 
   973 
   954 	sqlite3_stmt *st;
   974 	sqlite3_stmt *st;
   955 	 
   975 	 
   956 	TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
   976 	TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1006 				feedInfo->SetCustomTitle();
  1026 				feedInfo->SetCustomTitle();
  1007 				}
  1027 				}
  1008 			
  1028 			
  1009 			sqlite3_int64 lasterror = sqlite3_column_int(st, 11);
  1029 			sqlite3_int64 lasterror = sqlite3_column_int(st, 11);
  1010 			feedInfo->SetLastError(lasterror);
  1030 			feedInfo->SetLastError(lasterror);
  1011 			
  1031 		
       
  1032 			TInt filesize = sqlite3_column_int(st, 12);
       
  1033 			feedInfo->SetFeedFileSize(filesize);
       
  1034 
  1012 			TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1035 			TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1013 
  1036 
  1014 			iSortedFeeds.InsertInOrder(feedInfo, sortOrder);
  1037 			iSortedFeeds.InsertInOrder(feedInfo, sortOrder);
  1015 			
  1038 			
  1016 			CleanupStack::Pop(feedInfo);
  1039 			CleanupStack::Pop(feedInfo);
  1029 
  1052 
  1030 CFeedInfo* CFeedEngine::DBGetFeedInfoByUidL(TUint aFeedUid)
  1053 CFeedInfo* CFeedEngine::DBGetFeedInfoByUidL(TUint aFeedUid)
  1031 	{
  1054 	{
  1032 	DP("CFeedEngine::DBGetFeedInfoByUid BEGIN");
  1055 	DP("CFeedEngine::DBGetFeedInfoByUid BEGIN");
  1033 	CFeedInfo *feedInfo = NULL;
  1056 	CFeedInfo *feedInfo = NULL;
  1034 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror from feeds where uid=%u");
  1057 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror, filesize from feeds where uid=%u");
  1035 	iSqlBuffer.Format(KSqlStatement, aFeedUid);
  1058 	iSqlBuffer.Format(KSqlStatement, aFeedUid);
  1036 
  1059 
  1037 	sqlite3_stmt *st;
  1060 	sqlite3_stmt *st;
  1038 	
  1061 	
  1039 	int rc = sqlite3_prepare16_v2(&iDB, (const void*)iSqlBuffer.PtrZ() , -1, &st,	(const void**) NULL);
  1062 	int rc = sqlite3_prepare16_v2(&iDB, (const void*)iSqlBuffer.PtrZ() , -1, &st,	(const void**) NULL);
  1083 				feedInfo->SetCustomTitle();
  1106 				feedInfo->SetCustomTitle();
  1084 			}
  1107 			}
  1085 			
  1108 			
  1086 			TInt lasterror = sqlite3_column_int(st, 11);
  1109 			TInt lasterror = sqlite3_column_int(st, 11);
  1087 			feedInfo->SetLastError(lasterror);
  1110 			feedInfo->SetLastError(lasterror);
  1088 						
  1111 	
       
  1112 			TInt filesize = sqlite3_column_int(st, 12);
       
  1113 			feedInfo->SetFeedFileSize(filesize);
       
  1114 		
  1089 			CleanupStack::Pop(feedInfo);
  1115 			CleanupStack::Pop(feedInfo);
  1090 			}
  1116 			}
  1091 		else
  1117 		else
  1092 			{
  1118 			{
  1093 			User::Leave(KErrNotFound);
  1119 			User::Leave(KErrNotFound);