git-svn-id: svn://192.168.0.12/source@1 8346c931-da38-4b9b-9d4c-e48b93cbd075

This commit is contained in:
admin
2015-01-14 03:17:44 +00:00
commit ec1c8ec329
55 changed files with 5967 additions and 0 deletions

659
Filter/widget.cpp Normal file
View File

@@ -0,0 +1,659 @@
#include "widget.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QDebug>
#include <QPushButton>
#include <QThread>
#include <QTime>
#define D_NONE -1
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
QVBoxLayout *vMainLayout = new QVBoxLayout;
{
{
QHBoxLayout *hLayout = new QHBoxLayout;
QStringList strList;
strList << "Data" << "Filter" << "Company" << "Catalog";
m_plw = new QListWidget[E_LIST_MAX];
int i = 0;
foreach(QString str , strList)
{
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(new QLabel(str));
vLayout->addWidget(&m_plw[i++]);
hLayout->addLayout(vLayout);
}
connect(&m_plw[E_LIST_COMPANY],SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(CompanyItemChanged(QListWidgetItem*,QListWidgetItem*)));
vMainLayout->addLayout(hLayout);
}
{
QHBoxLayout *hLayout = new QHBoxLayout;
{
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(new QLabel("Filter Process"));
m_plwFilterProcess = new QListWidget;
vLayout->addWidget(m_plwFilterProcess);
{
QHBoxLayout *hLayoutEdit = new QHBoxLayout;
hLayoutEdit->addWidget(new QLabel("Cycle : "));
m_pleCycle = new QLineEdit;
hLayoutEdit->addWidget(m_pleCycle);
m_pleCycle->setText("172800");
m_pleCycle->setEnabled(false);
QPushButton *ppbInsert = new QPushButton("Insert");
connect(ppbInsert, SIGNAL(released()),this, SLOT(on_insert()));
hLayoutEdit->addWidget(ppbInsert);
QPushButton *ppbDelete = new QPushButton("Delete");
connect(ppbDelete, SIGNAL(released()),this, SLOT(on_delete()));
hLayoutEdit->addWidget(ppbDelete);
vLayout->addLayout(hLayoutEdit);
}
hLayout->addLayout(vLayout);
}
{
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->addWidget(new QLabel("Log"));
m_plwLog = new QListWidget;
vLayout->addWidget(m_plwLog);
hLayout->addLayout(vLayout);
}
vMainLayout->addLayout(hLayout);
}
QPushButton *ppbRefresh = new QPushButton("Refresh");
connect(ppbRefresh, SIGNAL(released()),this, SLOT(on_refresh()));
vMainLayout->addWidget(ppbRefresh);
}
/*
QPushButton *ppbSend = new QPushButton("Send");
vMainLayout->addWidget(ppbSend);
connect(ppbSend, SIGNAL(released()),this, SLOT(on_send()));
*/
connect(&m_timer, SIGNAL(timeout()), this, SLOT(Update()));
//m_pThread = new SGetThread;
setLayout(vMainLayout);
//m_pPutThread = new SPutThread[QThread::idealThreadCount()];
m_nMode = 0;
db = QSqlDatabase::addDatabase("QMYSQL");
m_timer.start(100);
Refresh();
FilterProcssRefresh();
}
Widget::~Widget()
{
}
void Widget::InsertLog(QString str)
{
QTime time = QTime::currentTime();
QString strOut = time.toString("[hh:mm:ss] ") + str;
m_plwLog->addItem(strOut);
if (m_plwLog->count() > 1024)
{
m_plwLog->removeItemWidget(m_plwLog->item(0));
QListWidgetItem* item = m_plwLog->takeItem(0);
delete item;
}
m_plwLog->setCurrentRow( m_plwLog->count() - 1 );
m_plwLog->repaint();
}
void Widget::Refresh()
{
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
for (int i = 0; i < E_LIST_MAX ; i++)
m_plw[i].clear();
{
QSqlQuery query("select id,name from filtergroup");
while (query.next())
{
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_FILTER]);
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
}
}
{
QSqlQuery query("select id,name FROM datagroup");
while(query.next())
{
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_DATA]);
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
}
}
db.close();
db.setHostName("db.big-bird.co.kr");
db.setUserName("concepters");
db.setPassword("con97996655");
db.setDatabaseName("dbconcepters");
if (db.open() == false)
{
qDebug() << db.lastError().text();
return;
}
{
QSqlQuery query("select num,name FROM company");
while(query.next())
{
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_COMPANY]);
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
}
}
db.close();
}
void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*)
{
if (_current == 0) return;
db.setHostName("db.big-bird.co.kr");
db.setUserName("concepters");
db.setPassword("con97996655");
db.setDatabaseName("dbconcepters");
if (db.open() == false)
{
qDebug() << db.lastError().text();
return;
}
m_plw[E_LIST_CATALOG].clear();
QSqlQuery query("select num,name FROM category where company_num = '" +_current->data(Qt::UserRole).toString()+ "'");
while(query.next())
{
QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),&m_plw[E_LIST_CATALOG]);
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
}
db.close();
}
void Widget::on_send()
{
//if (m_nMode != 0) return ;
//m_nMode = 1;
}
void Widget::on_insert()
{
if (m_pleCycle->text().isEmpty())
{
InsertLog("Cycle is null");
return;
}
int aId[E_LIST_MAX];
QString aStr[E_LIST_MAX];
for (int i = 0; i < E_LIST_MAX;i++)
{
aId[i] = D_NONE;
foreach (QListWidgetItem *item,m_plw[i].selectedItems())
{
aId[i] = item->data(Qt::UserRole).toInt();
aStr[i] = item->text();
}
if (aId[i] == D_NONE) return;
}
/*
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QString sql("insert into filterprocess (datagroup_id,datagroup_name,filtergroup_id,filtergroup_name, company_num, company_name , category_name , cycletime , lastruntime ) value (");
sql += QString::number(aId[E_LIST_DATA]) + ","; // datagroup_id
sql += "'" + aStr[E_LIST_DATA] + "',"; // datagroup_name
sql += QString::number(aId[E_LIST_FILTER]) + ","; // filtergroup_id
sql += "'" + aStr[E_LIST_FILTER] + "',"; // datagroup_name
sql += QString::number(aId[E_LIST_COMPANY]) + ","; // company_num
sql += "'" +aStr[E_LIST_COMPANY]+ "'," ; // company_name
sql += "'" +aStr[E_LIST_CATALOG]+ "'," ; // category_name
sql += m_pleCycle->text() + ","; //cycletime
QDateTime NowTime(QDateTime::currentDateTime().addDays(-3));
sql += "'" + NowTime.toString("yyyy-MM-dd HH:mm:ss") + "')"; //lastruntime
QSqlQuery query;
if(query.exec(sql) == false)
{
qDebug() << sql;
InsertLog(query.lastError().text());
}
db.close();
*/
QStringList list;
list.append("0");
list.append(QString::number(aId[E_LIST_DATA]));
list.append(aStr[E_LIST_DATA]);
list.append(QString::number(aId[E_LIST_FILTER]));
list.append(aStr[E_LIST_FILTER]);
list.append(QString::number(aId[E_LIST_COMPANY]));
list.append(aStr[E_LIST_COMPANY]); // company_name
list.append(aStr[E_LIST_CATALOG]);// category_name
list.append(m_pleCycle->text());
InsertLog("Run (" + list.at(2) + "," + list.at(4) + ") -> (" + list.at(6) + "," + list.at(7) +")" );
InsertLog("Data Get ..." );
m_mainData.clear();
DataGet(list);
InsertLog("Data Filter ..." );
DataFilter(list);
InsertLog("Data Put ..." );
DataPut(list);
InsertLog("Finish");
FilterProcssRefresh();
}
void Widget::on_delete()
{
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
foreach (QListWidgetItem *item,m_plwFilterProcess->selectedItems())
{
QSqlQuery query;
QString sql("delete from filterprocess where id = " + item->data(Qt::UserRole).toString());
if(query.exec(sql) == false)
{
InsertLog(query.lastError().text());
}
}
db.close();
FilterProcssRefresh();
}
void Widget::FilterProcssRefresh()
{
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QString sql("select id,datagroup_name,filtergroup_name,company_name,category_name,cycletime,lastruntime from filterprocess");
QSqlQuery query;
if(query.exec(sql) == false)
{
InsertLog(query.lastError().text());
}
m_plwFilterProcess->clear();
while(query.next())
{
QString str;
str += "(Data : " + query.value(1).toString();
str += ",Filter : " + query.value(2).toString();
str += ") -> (Company : " + query.value(3).toString();
str += ",Category : " + query.value(4).toString();
str += ") (Cycle : " + query.value(5).toString();
str += " sec, Last Run Time : " + query.value(6).toString() +")";
QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcess);
pItem->setData(Qt::UserRole, QVariant(query.value(0)));
}
db.close();
//datagroup,filtergroup company category cycletime , lastruntime
}
QString Widget::SqlString(QString _str)
{
_str.replace("\\","\\\\");
_str.replace("'","");
_str.replace(",","\\,");
return _str;
}
void Widget::Update()
{
/*
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QString sql("select id,datagroup_id,datagroup_name,filtergroup_id,filtergroup_name,company_num,company_name,category_name,cycletime,lastruntime from filterprocess");
QSqlQuery query;
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
QVector <QStringList> vecData;
while(query.next())
{
QDateTime nextDateTime = query.value(9).toDateTime().addSecs(query.value(8).toInt());
if (QDateTime::currentDateTime() >= nextDateTime)
{
QStringList strlist;
for(int i = 0; i < 10 ; i++)
strlist.push_back(query.value(i).toString());
vecData.push_back(strlist);
}
}
db.close();
foreach(QStringList list,vecData)
{
InsertLog("Run (" + list.at(2) + "," + list.at(4) + ") -> (" + list.at(6) + "," + list.at(7) +")" );
InsertLog("Data Get ..." );
m_mainData.clear();
DataGet(list);
InsertLog("Data Filter ..." );
DataFilter(list);
InsertLog("Data Put ..." );
DataPut(list);
InsertLog("Finish");
}
*/
}
void Widget::DataGet(QStringList _list)
{
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QString sql;
QSqlQuery query;
sql = "update filterprocess set lastruntime = '" + QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss") +"' where id = " + _list.at(0);
query.exec(sql);
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
QString strSelect;
strSelect = "select ";
strSelect += "CONVERT(body_articleid USING utf8),";
strSelect += "CONVERT(body_nickname USING utf8),";
strSelect += "CONVERT(body_date USING utf8),";
strSelect += "CONVERT(body_articletitle USING utf8),";
strSelect += "CONVERT(body_data USING utf8),";
strSelect += "CONVERT(body_platformid USING utf8),";
strSelect += "CONVERT(body_platformtitle USING utf8),";
strSelect += "CONVERT(url USING utf8),";
strSelect += "CONVERT(reply_nickname USING utf8),";
strSelect += "CONVERT(reply_parent USING utf8),";
strSelect += "CONVERT(reply_date USING utf8),";
strSelect += "CONVERT(reply_data USING utf8),";
strSelect += "CONVERT(reply_urlreply USING utf8),";
strSelect += "CONVERT(keyword_id USING utf8),";
strSelect += "CONVERT(platformname USING utf8),";
strSelect += "CONVERT(platformform USING utf8),";
strSelect += "CONVERT(articleform USING utf8),";
strSelect += "CONVERT(reply_rownum USING utf8)";
strSelect += " from ";
strSelect += "data_" + _list.at(1);
strSelect += " Order by body_date";
if(query.exec(strSelect) == false) { InsertLog(query.lastError().text());return;}
while(query.next())
{
QStringList strList;
for(int i = 0; i < 18; i++)
strList << " " + query.value(i).toString() + " ";
m_mainData.append(strList);
}
db.close();
}
void Widget::FilterDate(int _nCategory,QDate _dateStart,QDate _dateEnd)
{
int nColumn;
switch(_nCategory)
{
case 0:nColumn = 2;break; // main
case 1:nColumn = 10;break; // comment
default : return;
}
QVector <QStringList> copyData;
foreach(QStringList strList , m_mainData)
{
bool bFlag = false;
QString strTime = strList.at(nColumn).trimmed();
if (strTime.size() >= 10)
{
QChar ch = strTime.at(4);
QString strFormat = QString("yyyy")+ch+QString("MM")+ch+QString("dd");
QDate date = QDate::fromString(strTime.left(10),strFormat);
if (_dateStart <= date && _dateEnd >= date)
bFlag = true;
}
if (bFlag)
copyData.push_back(strList);
}
m_mainData.clear();
m_mainData = copyData;
}
void Widget::FilterSeracher(int _nCatalog,int _nMethod , int _nKeyword , QString _strSearch)
{
QStringList strListKeyword = _strSearch.split(" ");
if (_nMethod == 1)
{
for (int i = 0 ; i < strListKeyword.size(); i++ )
strListKeyword[i] = " " + strListKeyword[i] + " ";
}
QVector <QStringList> copyData;
foreach(QStringList strList , m_mainData)
{
bool bFlag = false;
QString strData = strList.at(_nCatalog);
switch(_nKeyword)
{
case 0:
{
foreach(QString strKey , strListKeyword)
if (strData.contains(strKey)){bFlag = true;break;}
break;
}
case 1:
{
int nKeyCount = 0;
foreach(QString strKey , strListKeyword)
if (strData.contains(strKey)) nKeyCount++;
if (nKeyCount == strListKeyword.size())
bFlag = true;
break;
}
case 2:
{
bFlag = true;
foreach(QString strKey , strListKeyword)
if (strData.contains(strKey)){bFlag = false;break;}
break;
}
case 3:
{
foreach(QString strKey , strListKeyword)
strList[_nCatalog].replace(strKey,"");
bFlag = true;
break;
}
}
if (bFlag) copyData.push_back(strList);
}
m_mainData.clear();
m_mainData = copyData;
}
void Widget::DataFilter(QStringList _list)
{
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QString sql = "select id,type,timecategory,timestart,timeend,searchescategory,searchesmethod,searcheskeyword,searchesstring from filter where filtergroup_id = " + _list.at(3);
QSqlQuery query;
if(query.exec(sql) == false) { InsertLog(query.lastError().text());return;}
while (query.next())
{
QString str;
switch(query.value(1).toInt())
{
case 0://Date
FilterDate(query.value(2).toInt(),query.value(3).toDate(),query.value(4).toDate());
break;
case 1:
FilterSeracher(query.value(5).toInt(),query.value(6).toInt(),query.value(7).toInt(),query.value(8).toString());
break;
}
}
db.close();
}
void Widget::DataPut(QStringList _list)
{
db.setHostName("db.big-bird.co.kr");
db.setUserName("concepters");
db.setPassword("con97996655");
db.setDatabaseName("dbconcepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
QSqlQuery query;
QString strDelete = "delete from data where company_name = '" + _list.at(6) + "' AND category_name = '" + _list.at(7) + "'";
if(query.exec(strDelete.toUtf8()) == false) {
InsertLog(query.lastError().text());
return;}
//qDebug() << strDelete;
QString strInsert = "insert into data ( company_name , category_name , platform_name , platform_form , platform_title ,"
"article_num , article_rownum , article_form , article_title , article_url , article_id , article_nickname , "
"article_date , article_body , article_reply ) value (";
foreach(QStringList strList , m_mainData)
{
for (int i = 0; i < strList.size(); i++)
strList[i] = strList[i].trimmed();
QString strQuery = strInsert;
strQuery += "'"+_list.at(6)+ "',"; //company_name
strQuery += "'"+_list.at(7)+ "',"; //category_name
strQuery += "'" + strList.at(14) + "',"; //platform_name
strQuery += "'" + strList.at(15) + "',"; //platform_form
strQuery += "'" + SqlString(strList.at(6)) + "',"; //platform_title
strQuery += "'0',"; //article_num
strQuery += "'" + strList.at(17) + "',"; //article_rownum
strQuery += "'" + strList.at(16) + "',"; //article_type
strQuery += "'" + SqlString(strList.at(3)) + "',"; //article_title
strQuery += "'" + strList.at(7) + "',"; //article_url
strQuery += "'" + strList.at(0) + "',"; //article_id
QString str = strList.at(1);
str.replace("var isInitial","");
str.replace(";","");
strQuery += "'" + SqlString(str.trimmed()) + "',"; //article_nickname
if (strList.at(16) == "reply")
strQuery += "'" + strList.at(10) + "',"; //article_date
else
strQuery += "'" + strList.at(2) + "',"; //article_date
strQuery += "'" + SqlString(strList.at(4)) + "',"; //article_body
strQuery += "'" + SqlString(strList.at(11)) + "')"; //article_reply
if(query.exec(strQuery) == false){ InsertLog(query.lastError().text());return;}
}
db.close();
}
void Widget::on_refresh()
{
Refresh();
FilterProcssRefresh();
}
/*
void Widget::Update()
{
switch(m_nMode)
{
case 1:
m_data.clear();
db.setHostName("bigbird.iptime.org");
db.setUserName("admin");
db.setPassword("admin123");
db.setDatabaseName("concepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
foreach (QListWidgetItem *item,m_plw[E_LIST_DATA].selectedItems())
{
m_pThread->SetData(QString("data_"+item->data(Qt::UserRole).toString()),&m_data);
}
m_pThread->start();
m_nMode = 2;
InsertLog("Data Read Start");
break;
case 2:
if (m_pThread->isRunning() == false)
{
db.close();
InsertLog("Data Read End");
InsertLog("Data Write Web Start");
db.setHostName("db.big-bird.co.kr");
db.setUserName("concepters");
db.setPassword("con97996655");
db.setDatabaseName("dbconcepters");
if (db.open() == false)
{
InsertLog(db.lastError().text());
return;
}
db.exec("delete from data");
qDebug() << QString::number(m_data.size());
m_pPutThread[0].SetData("data",&m_data,0,m_data.size());
m_pPutThread[0].start();
m_nMode = 3;
}
break;
case 3:
if (m_pPutThread[0].isRunning() == false)
{
m_nMode = 0;
InsertLog("Data Write Web End");
}
break;
}
}
*/