Пример #1
0
/*
	Exist()
*/
BOOL CUrlDatabaseService::Exist(LPCSTR lpcszUrl,LPSTR lpszDate,UINT nDateSize,CUrlStatus::URL_STATUS& nStat,UINT& nID)
{
	BOOL bExist = FALSE;
	nStat = CUrlStatus::URL_STATUS_UNKNOWN;
	nID = 0;

	if(m_bIsValid)
	{
		// sincronizza gli accessi
		if(m_pUrlDatabaseTable->Lock(SYNC_5_SECS_TIMEOUT))
		{
			strcpyn(m_szUrl,lpcszUrl,sizeof(m_szUrl));
			m_Url.DecodeUrl(m_szUrl);

			// controlla se il valore specificato esiste
			if(m_pUrlDatabaseTable->Seek(m_szUrl,URLDATABASE_IDX_URL))
			{
				m_pUrlDatabaseTable->ScatterMemvars();

				CDateTime* pDate = m_pUrlDatabaseTable->GetField_Date();
				CDateTime* pTime = m_pUrlDatabaseTable->GetField_StartTime();
				m_DateTime.SetYear(pDate->GetYear());
				m_DateTime.SetMonth(pDate->GetMonth());
				m_DateTime.SetDay(pDate->GetDay());
				m_DateTime.SetHour(pTime->GetHour());
				m_DateTime.SetMin(pTime->GetMin());
				m_DateTime.SetSec(pTime->GetSec());
				m_DateTime.SetDateFormat(GMT);
				strcpyn(lpszDate,m_DateTime.GetFormattedDate(FALSE),nDateSize);
				nStat = (CUrlStatus::URL_STATUS)m_pUrlDatabaseTable->GetField_Status();
				nID = m_pUrlDatabaseTable->GetField_Id();
				
				bExist = TRUE;
			}
			else
			{
				memset(lpszDate,'\0',nDateSize);
			}

			m_pUrlDatabaseTable->Unlock();
		}
	}

	return(bExist);
}
Пример #2
0
/*
	Update()
*/
BOOL CUrlDatabaseService::Update(	LPCSTR	lpcszUrl,
							LPCSTR	lpcszEndTime,
							double	dlTotalTime,
							double	dlDownloadTime,
							CUrlStatus::URL_STATUS nStat,
							UINT		nID,
							LPCSTR	lpcszReportName,
							CUrlTable* pHttptable
							)
{
	BOOL bInserted = FALSE;

	if(m_bIsValid)
	{
		// sincronizza gli accessi
		if(m_pUrlDatabaseTable->Lock(SYNC_5_SECS_TIMEOUT))
		{
			strcpyn(m_szUrl,lpcszUrl,sizeof(m_szUrl));

			// scorre il database per ricavare i totali
			double dlTotBytes = 0.0f;
			UINT nUrls = 0;
			UINT nDownloadedUrls = 0;
			UINT nDownloadedItems = 0;
			UINT nTotalPict = 0;
			if(pHttptable)
			{
				pHttptable->SetIndex(URL_IDX_ID);

				if(pHttptable->GoTop())
				{
					do
					{
						pHttptable->ScatterMemvars();
						
						nUrls++;
						
						if((CUrlStatus::URL_STATUS)pHttptable->GetField_Stat()==CUrlStatus::URL_STATUS_DOWNLOADED)
						{
							nDownloadedUrls++;
							dlTotBytes += pHttptable->GetField_Size();
						}
						
						m_Url.SplitUrl(pHttptable->GetField_Url(),&m_stUrl);

						if(CImage::IsImageFile(m_stUrl.file) || CImage::IsImageFile(m_stUrl.cgi))
						{
							nTotalPict++;
							if((CUrlStatus::URL_STATUS)pHttptable->GetField_Stat()==CUrlStatus::URL_STATUS_DOWNLOADED)
								nDownloadedItems++;
						}
						
						pHttptable->GetNext();
					
					} while(!pHttptable->Eof());
				}
			}

			CDateTime* pDate = NULL;
			CDateTime* pTime = NULL;
			CDateTime Date;
			CDateTime Time;
			CString cData = "";
			BOOL bFound = FALSE;

			if(m_pUrlDatabaseTable->Seek(m_szUrl,URLDATABASE_IDX_URL))
			{
				m_pUrlDatabaseTable->ScatterMemvars();
				
				pDate = m_pUrlDatabaseTable->GetField_Date();
				pTime = m_pUrlDatabaseTable->GetField_StartTime();
				Date.SetYear(pDate->GetYear());
				Date.SetMonth(pDate->GetMonth());
				Date.SetDay(pDate->GetDay());
				Time.SetHour(pTime->GetHour());
				Time.SetMin(pTime->GetMin());
				Time.SetSec(pTime->GetSec());
				cData = m_pUrlDatabaseTable->GetField_DataTable();
				
				m_pUrlDatabaseTable->Delete();

				bFound = TRUE;
			}
			
			if(bFound)
			{
				m_pUrlDatabaseTable->ResetMemvars();
				
				m_pUrlDatabaseTable->PutField_Url			(	m_szUrl			);
				m_pUrlDatabaseTable->PutField_Date			(	&Date			);
				m_pUrlDatabaseTable->PutField_StartTime		(	&Time			);
				m_DateTime.ConvertTime(HHMMSS_GMT,HHMMSS,lpcszEndTime,NULL);
				m_pUrlDatabaseTable->PutField_EndTime		(	&m_DateTime		);
				m_pUrlDatabaseTable->PutField_TotalTime		(	dlTotalTime		);
				m_pUrlDatabaseTable->PutField_DownloadTime	(	dlDownloadTime		);
				m_pUrlDatabaseTable->PutField_Downloaded	(	dlTotBytes		);
				m_pUrlDatabaseTable->PutField_TotalUrls		(	nUrls			);
				m_pUrlDatabaseTable->PutField_TotalPict		(	nTotalPict		);
				m_pUrlDatabaseTable->PutField_DownloadedUrls	(	nDownloadedUrls	);
				m_pUrlDatabaseTable->PutField_DownloadedItems(	nDownloadedItems	);
				m_pUrlDatabaseTable->PutField_DataTable		(	cData			);
				m_pUrlDatabaseTable->PutField_Report		(	lpcszReportName	);
				m_pUrlDatabaseTable->PutField_Status		(	(short int)nStat	);
				m_pUrlDatabaseTable->PutField_Id			(	nID				);
				
				m_pUrlDatabaseTable->GatherMemvars();
				
				bInserted = m_pUrlDatabaseTable->Insert();
			}

			m_pUrlDatabaseTable->Unlock();
		}
	}

	return(bInserted);
}