engine/src/FeedEngine.cpp
branchRCL_3
changeset 342 9441fb8fd60d
parent 334 a7cb97979427
child 367 4b75876aa85a
equal deleted inserted replaced
341:a648d7ca5e27 342:9441fb8fd60d
    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;
   729 	{
   730 	{
   730 	}
   731 	}
   731 
   732 
   732 void CFeedEngine::DownloadInfo(CHttpClient* /*aHttpClient */, int /*aTotalBytes*/)
   733 void CFeedEngine::DownloadInfo(CHttpClient* /*aHttpClient */, int /*aTotalBytes*/)
   733 	{	
   734 	{	
       
   735 	
       
   736 	}
       
   737 
       
   738 void CFeedEngine::DBEnsureFileSizeFieldExists()
       
   739 	{
       
   740 	DP("DBEnsureFileSizeFieldExists BEGIN");
       
   741 	sqlite3_stmt *st;
       
   742 	int rc = sqlite3_prepare_v2(&iDB,"alter table feeds add column filesize int" , -1, &st, (const char**) NULL);
       
   743 	DP1("    rc=%d", rc);
       
   744 	 
       
   745 	if( rc==SQLITE_OK )
       
   746 		{
       
   747 		Cleanup_sqlite3_finalize_PushL(st);
       
   748 		rc = sqlite3_step(st);
       
   749 		DP1("    rc=%d", rc);
       
   750 		CleanupStack::PopAndDestroy(); // st
       
   751 		}
       
   752 
       
   753 	DP("DBEnsureFileSizeFieldExists END");
   734 	}
   754 	}
   735 
   755 
   736 EXPORT_C void CFeedEngine::ImportFeedsL(const TDesC& aFile)
   756 EXPORT_C void CFeedEngine::ImportFeedsL(const TDesC& aFile)
   737 	{
   757 	{
   738 	TFileName opmlPath;
   758 	TFileName opmlPath;
   947 	{
   967 	{
   948 	DP("DBLoadFeeds BEGIN");
   968 	DP("DBLoadFeeds BEGIN");
   949 	iSortedFeeds.Reset();
   969 	iSortedFeeds.Reset();
   950 	CFeedInfo *feedInfo = NULL;
   970 	CFeedInfo *feedInfo = NULL;
   951 	
   971 	
   952 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror from feeds");
   972 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror, filesize from feeds");
   953 	iSqlBuffer.Format(KSqlStatement);
   973 	iSqlBuffer.Format(KSqlStatement);
   954 
   974 
   955 	sqlite3_stmt *st;
   975 	sqlite3_stmt *st;
   956 	 
   976 	 
   957 	TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
   977 	TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1007 				feedInfo->SetCustomTitle();
  1027 				feedInfo->SetCustomTitle();
  1008 				}
  1028 				}
  1009 			
  1029 			
  1010 			sqlite3_int64 lasterror = sqlite3_column_int(st, 11);
  1030 			sqlite3_int64 lasterror = sqlite3_column_int(st, 11);
  1011 			feedInfo->SetLastError(lasterror);
  1031 			feedInfo->SetLastError(lasterror);
  1012 			
  1032 		
       
  1033 			TInt filesize = sqlite3_column_int(st, 12);
       
  1034 			feedInfo->SetFeedFileSize(filesize);
       
  1035 
  1013 			TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1036 			TLinearOrder<CFeedInfo> sortOrder( CFeedEngine::CompareFeedsByTitle);
  1014 
  1037 
  1015 			iSortedFeeds.InsertInOrder(feedInfo, sortOrder);
  1038 			iSortedFeeds.InsertInOrder(feedInfo, sortOrder);
  1016 			
  1039 			
  1017 			CleanupStack::Pop(feedInfo);
  1040 			CleanupStack::Pop(feedInfo);
  1030 
  1053 
  1031 CFeedInfo* CFeedEngine::DBGetFeedInfoByUidL(TUint aFeedUid)
  1054 CFeedInfo* CFeedEngine::DBGetFeedInfoByUidL(TUint aFeedUid)
  1032 	{
  1055 	{
  1033 	DP("CFeedEngine::DBGetFeedInfoByUid BEGIN");
  1056 	DP("CFeedEngine::DBGetFeedInfoByUid BEGIN");
  1034 	CFeedInfo *feedInfo = NULL;
  1057 	CFeedInfo *feedInfo = NULL;
  1035 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror from feeds where uid=%u");
  1058 	_LIT(KSqlStatement, "select url, title, description, imageurl, imagefile, link, built, lastupdated, uid, feedtype, customtitle, lasterror, filesize from feeds where uid=%u");
  1036 	iSqlBuffer.Format(KSqlStatement, aFeedUid);
  1059 	iSqlBuffer.Format(KSqlStatement, aFeedUid);
  1037 
  1060 
  1038 	sqlite3_stmt *st;
  1061 	sqlite3_stmt *st;
  1039 	
  1062 	
  1040 	int rc = sqlite3_prepare16_v2(&iDB, (const void*)iSqlBuffer.PtrZ() , -1, &st,	(const void**) NULL);
  1063 	int rc = sqlite3_prepare16_v2(&iDB, (const void*)iSqlBuffer.PtrZ() , -1, &st,	(const void**) NULL);
  1084 				feedInfo->SetCustomTitle();
  1107 				feedInfo->SetCustomTitle();
  1085 			}
  1108 			}
  1086 			
  1109 			
  1087 			TInt lasterror = sqlite3_column_int(st, 11);
  1110 			TInt lasterror = sqlite3_column_int(st, 11);
  1088 			feedInfo->SetLastError(lasterror);
  1111 			feedInfo->SetLastError(lasterror);
  1089 						
  1112 	
       
  1113 			TInt filesize = sqlite3_column_int(st, 12);
       
  1114 			feedInfo->SetFeedFileSize(filesize);
       
  1115 		
  1090 			CleanupStack::Pop(feedInfo);
  1116 			CleanupStack::Pop(feedInfo);
  1091 			}
  1117 			}
  1092 		else
  1118 		else
  1093 			{
  1119 			{
  1094 			User::Leave(KErrNotFound);
  1120 			User::Leave(KErrNotFound);