Real Time 대폭 수정

git-svn-id: svn://192.168.0.12/source@113 8346c931-da38-4b9b-9d4c-e48b93cbd075
This commit is contained in:
admin
2015-05-13 07:28:17 +00:00
parent 08cfdd9083
commit 5e6792743b
2 changed files with 65 additions and 120 deletions

View File

@@ -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));
}
}

View File

@@ -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: