Real Time 대폭 수정
git-svn-id: svn://192.168.0.12/source@113 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
@@ -54,19 +54,20 @@ Widget::~Widget()
|
||||
{
|
||||
if (m_nMode == E_MODE_RUN)
|
||||
{
|
||||
if (m_pgbManual->isChecked() == false)
|
||||
if (m_pcheckboxReal->isChecked() == false)
|
||||
{
|
||||
if (m_strCrawlingID.isEmpty() == false)
|
||||
{
|
||||
SetCrawlingState("Finish");
|
||||
}
|
||||
}
|
||||
}
|
||||
UnLockTables();
|
||||
else
|
||||
{
|
||||
if (m_strCrawlingID.isEmpty() == false)
|
||||
SetCrawlingState("RealTime_Exit");
|
||||
}
|
||||
}
|
||||
m_db.close();
|
||||
for (int i = 0 ; i < C_CRAWLER_MAX ; i++)
|
||||
m_pManage[i]->SetParent(0);
|
||||
|
||||
}
|
||||
|
||||
QGroupBox *Widget::setRealGroupWidgets()
|
||||
@@ -77,13 +78,17 @@ QGroupBox *Widget::setRealGroupWidgets()
|
||||
QPushButton *pbtRefresh = new QPushButton("Refresh",this);
|
||||
QPushButton *pbtStart = new QPushButton("Start",this);
|
||||
QPushButton *pbtStop = new QPushButton("Stop",this);
|
||||
|
||||
{
|
||||
QObject::connect(pbtStart,SIGNAL(clicked()),this,SLOT(StartButton()));
|
||||
QObject::connect(pbtStop,SIGNAL(clicked()),this,SLOT(StopButton()));
|
||||
QObject::connect(pbtRefresh,SIGNAL(clicked()),this,SLOT(RefreshButton()));
|
||||
}
|
||||
|
||||
m_pcheckboxReal = new QCheckBox("Real Time",this);
|
||||
QObject::connect(m_pcheckboxReal,SIGNAL(clicked()),this,SLOT(RefreshButton()));
|
||||
QVBoxLayout *vlayout = new QVBoxLayout;
|
||||
vlayout->addWidget(m_pcheckboxReal);
|
||||
{
|
||||
QHBoxLayout *hlayout = new QHBoxLayout;
|
||||
hlayout->addWidget(m_pcb,Qt::AlignLeft);
|
||||
@@ -101,11 +106,9 @@ QGroupBox *Widget::setRealGroupWidgets()
|
||||
vlayout->addLayout(hlayout);
|
||||
}
|
||||
|
||||
m_pgbManual = new QGroupBox(tr("Manual"));
|
||||
m_pgbManual->setCheckable(true);
|
||||
m_pgbManual->setChecked(true);
|
||||
m_pgbManual->setLayout(vlayout);
|
||||
return m_pgbManual;
|
||||
QGroupBox *pGroup = new QGroupBox();
|
||||
pGroup->setLayout(vlayout);
|
||||
return pGroup;
|
||||
}
|
||||
|
||||
void Widget::InsertLog(QString str)
|
||||
@@ -115,28 +118,6 @@ void Widget::InsertLog(QString str)
|
||||
m_pResultList->addItem(strOut);
|
||||
QDate date = QDate::currentDate();
|
||||
|
||||
/*
|
||||
QString _str;
|
||||
|
||||
|
||||
if(!m_pgbManual->isChecked())
|
||||
{
|
||||
_str = "RealTime";
|
||||
}
|
||||
else
|
||||
{
|
||||
_str = m_pcb->currentText();
|
||||
//qDebug() << _str;
|
||||
|
||||
_str = _str.replace("|","_");
|
||||
_str = _str.replace(" ","");
|
||||
_str = _str.replace(",","_");
|
||||
_str = _str.replace("~","_");
|
||||
_str = _str.replace("->","_");
|
||||
|
||||
//qDebug() << _str;
|
||||
}
|
||||
*/
|
||||
QFile file(date.toString(Qt::ISODate)+ "_" + QString::number(QCoreApplication::applicationPid())+ ".log");
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||
return;
|
||||
@@ -155,26 +136,35 @@ void Widget::InsertLog(QString str)
|
||||
m_pResultList->repaint();
|
||||
}
|
||||
|
||||
void Widget::SetCrawlingState(QString _str)
|
||||
void Widget::Debug(QString _strMsg)
|
||||
{
|
||||
QTime time = QTime::currentTime();
|
||||
QString strOut = time.toString("[hh:mm:ss] ") + _strMsg;
|
||||
|
||||
QFile file(QDate::currentDate().toString(Qt::ISODate)+ "_" + QString::number(QCoreApplication::applicationPid())+ ".debug.txt");
|
||||
if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append))
|
||||
return;
|
||||
|
||||
QTextStream out(&file);
|
||||
out << strOut << "\n";
|
||||
file.close();
|
||||
}
|
||||
|
||||
bool Widget::SetCrawlingState(QString _str)
|
||||
{
|
||||
QSqlQuery query;
|
||||
if (_str == QString("RealTime_Exit"))
|
||||
query.exec("UPDATE crawling set state = 0 where id = '" + m_strCrawlingID + "'");
|
||||
if (_str == QString("Finish"))
|
||||
{
|
||||
if (m_pgbManual->isChecked())
|
||||
query.exec("UPDATE crawling set state = 2 where id = '" + m_strCrawlingID + "'");
|
||||
else
|
||||
query.exec("UPDATE crawling set state = 0 where id = '" + m_strCrawlingID + "'");
|
||||
m_pgbManual->setEnabled(true);
|
||||
query.exec("UPDATE crawling set state = 2 where id = '" + m_strCrawlingID + "'");
|
||||
m_nMode = E_MODE_WAIT;
|
||||
if (m_pcheckboxReal->isChecked() == false)
|
||||
m_strCrawlingID.clear();
|
||||
}
|
||||
if (_str == QString("Start"))
|
||||
{
|
||||
//if (m_pgbManual->isChecked() == false)
|
||||
query.exec("UPDATE crawling set state = 1 where id = '" + m_strCrawlingID + "'");
|
||||
|
||||
|
||||
m_pgbManual->setEnabled(false);
|
||||
}
|
||||
query.exec("UPDATE crawling set state = 1 where id = '" + m_strCrawlingID + "'");
|
||||
return true;
|
||||
}
|
||||
|
||||
void Widget::Start()
|
||||
@@ -196,18 +186,7 @@ void Widget::Start()
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_pgbManual->isChecked())
|
||||
{
|
||||
m_pManage[m_nPlatform]->Start(QDate::fromString(query.value(0).toString(),"yyyy-MM-dd"),
|
||||
QDate::fromString(query.value(1).toString(),"yyyy-MM-dd"),
|
||||
query.value(2).toString().trimmed(),// keyword
|
||||
query.value(3).toString().trimmed(),// authorship
|
||||
query.value(4).toString().trimmed(),// keyword_id
|
||||
query.value(5).toString().trimmed(),
|
||||
1,
|
||||
m_pedTime->text().trimmed());
|
||||
}
|
||||
else
|
||||
if (m_pcheckboxReal->isChecked())
|
||||
{
|
||||
m_pManage[m_nPlatform]->Start(QDate::currentDate(),QDate::currentDate(),
|
||||
query.value(2).toString().trimmed(),// keyword
|
||||
@@ -217,6 +196,17 @@ void Widget::Start()
|
||||
1,
|
||||
m_pedTime->text().trimmed());
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pManage[m_nPlatform]->Start(QDate::fromString(query.value(0).toString(),"yyyy-MM-dd"),
|
||||
QDate::fromString(query.value(1).toString(),"yyyy-MM-dd"),
|
||||
query.value(2).toString().trimmed(),// keyword
|
||||
query.value(3).toString().trimmed(),// authorship
|
||||
query.value(4).toString().trimmed(),// keyword_id
|
||||
query.value(5).toString().trimmed(),
|
||||
1,
|
||||
m_pedTime->text().trimmed());
|
||||
}
|
||||
SetCrawlingState("Start");
|
||||
m_nMode = E_MODE_RUN;
|
||||
}
|
||||
@@ -230,19 +220,7 @@ void Widget::StartButton()
|
||||
void Widget::StopButton()
|
||||
{
|
||||
m_nMode = E_MODE_WAIT;
|
||||
}
|
||||
|
||||
bool Widget::LockTable()
|
||||
{
|
||||
QSqlQuery query;
|
||||
return query.exec(QString("lock tables crawling write, datagroup write, keyword write" ).toUtf8());
|
||||
//lock tables crawling write, keyword write;
|
||||
}
|
||||
|
||||
void Widget::UnLockTables()
|
||||
{
|
||||
QSqlQuery query;
|
||||
query.exec(QString("unlock tables").toUtf8());
|
||||
m_strCrawlingID.clear();
|
||||
}
|
||||
|
||||
void Widget::Update()
|
||||
@@ -256,54 +234,19 @@ void Widget::Update()
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (m_pgbManual->isChecked())
|
||||
switch(m_nMode)
|
||||
{
|
||||
// Menual Mode
|
||||
switch(m_nMode)
|
||||
case E_MODE_WAIT:
|
||||
if (m_pcheckboxReal->isChecked())
|
||||
{
|
||||
case E_MODE_WAIT:return;
|
||||
if (m_strCrawlingID.isEmpty() == false)
|
||||
Start();
|
||||
}
|
||||
break;
|
||||
case E_MODE_RUN:
|
||||
m_pManage[m_nPlatform]->Update();
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
// RealTime Mode
|
||||
switch(m_nMode)
|
||||
{
|
||||
case E_MODE_WAIT:
|
||||
if (LockTable() == false)
|
||||
{
|
||||
UnLockTables();
|
||||
return;
|
||||
}
|
||||
QSqlQuery query;
|
||||
if (query.exec("SELECT crawling.id,keyword.start,keyword.end "
|
||||
"FROM crawling INNER JOIN keyword ON crawling.keyword_id = keyword.id "
|
||||
"where crawling.state = 0 and keyword.realtime = 1 and keyword.state is null") == false)
|
||||
{
|
||||
InsertLog(query.lastError().text());
|
||||
UnLockTables();
|
||||
return;
|
||||
}
|
||||
QDate dateNow = QDate::currentDate();
|
||||
m_strCrawlingID.clear();
|
||||
while (query.next())
|
||||
{
|
||||
QDate dateStart = QDate::fromString(query.value(1).toString(),"yyyy-MM-dd");
|
||||
QDate dateEnd = QDate::fromString(query.value(2).toString(),"yyyy-MM-dd");
|
||||
if (dateNow < dateStart) continue;
|
||||
if (dateNow > dateEnd) continue;
|
||||
m_strCrawlingID = query.value(0).toString();
|
||||
break;
|
||||
}
|
||||
if(m_strCrawlingID.isEmpty() == false)
|
||||
Start();
|
||||
UnLockTables();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
m_pManage[m_nPlatform]->Update();
|
||||
}
|
||||
|
||||
void Widget::RefreshButton()
|
||||
@@ -311,7 +254,7 @@ void Widget::RefreshButton()
|
||||
m_pcb->clear();
|
||||
QSqlQuery query("SELECT keyword.searches,keyword.authorship,keyword.start,keyword.end,datagroup.name,keyword.platform,crawling.state,crawling.id "
|
||||
"FROM crawling INNER JOIN keyword ON crawling.keyword_id = keyword.id "
|
||||
"inner join datagroup on crawling.datagroup_id = datagroup.id where crawling.state = 0 and keyword.realtime = 0 ");
|
||||
"inner join datagroup on crawling.datagroup_id = datagroup.id where crawling.state = 0 and keyword.realtime = " + QString::number(m_pcheckboxReal->isChecked()));
|
||||
while (query.next())
|
||||
{
|
||||
QString str;
|
||||
@@ -326,7 +269,6 @@ void Widget::RefreshButton()
|
||||
case 1:str += ", Naver Blog";break;
|
||||
case 2:str += ", Daum Cafe"; break;
|
||||
}
|
||||
|
||||
m_pcb->addItem(str,query.value(7));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <QListWidget>
|
||||
#include <QSqlDatabase>
|
||||
#include <QComboBox>
|
||||
#include <QCheckBox>
|
||||
#include <QGroupBox>
|
||||
|
||||
class SNaverCafeManage;
|
||||
@@ -25,9 +26,10 @@ public:
|
||||
~Widget();
|
||||
public:
|
||||
void InsertLog(QString str);
|
||||
void SetCrawlingState(QString _str);
|
||||
bool SetCrawlingState(QString _str);
|
||||
bool LockTable();
|
||||
void UnLockTables();
|
||||
void Debug(QString _strMsg);
|
||||
|
||||
enum E_MODE
|
||||
{
|
||||
@@ -48,8 +50,9 @@ private:
|
||||
SNaverCafeManage *m_pNaverCafe;
|
||||
SNaverBlogManage *m_pNaverBlog;
|
||||
SDaumCafeManage *m_pDaumCafe;
|
||||
int m_nStartTime,m_nRangeTime,m_nPlatform;
|
||||
QGroupBox *m_pgbManual;
|
||||
int m_nStartTime,m_nRangeTime,m_nPlatform;
|
||||
//QGroupBox *m_pgbManual;
|
||||
QCheckBox *m_pcheckboxReal;
|
||||
int m_nMode;
|
||||
QString m_strCrawlingID;
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user