diff --git a/Filter/widget.cpp.bak b/Filter/widget.cpp.bak deleted file mode 100644 index 9936960..0000000 --- a/Filter/widget.cpp.bak +++ /dev/null @@ -1,812 +0,0 @@ -#include "widget.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "../Json/sjson.h" -#include "../common.h" -#define MINUTE 60000 -Widget::Widget(QWidget *parent) : - QWidget(parent) -{ - QVBoxLayout *vMainLayout = new QVBoxLayout; - { - { - QHBoxLayout *hLayout = new QHBoxLayout; - QStringList strList; - strList << "Data" << "Filter Group" << "Company" << "Category"; - 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; - { - QHBoxLayout *h_0_Layout = new QHBoxLayout; - { - QVBoxLayout *v_0_Layout = new QVBoxLayout; - v_0_Layout->addWidget(new QLabel("Filter Process Group")); - m_plwFilterProcessGroup = new QListWidget; - connect(m_plwFilterProcessGroup,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(FilterProcessGroupClicked(QListWidgetItem*))); - v_0_Layout->addWidget(m_plwFilterProcessGroup); - m_pleFilterProcessGroup = new QLineEdit; - v_0_Layout->addWidget(m_pleFilterProcessGroup); - { - QHBoxLayout *hSubLayout = new QHBoxLayout; - QPushButton *ppbInsert = new QPushButton("Insert"); - connect(ppbInsert, SIGNAL(released()),this, SLOT(on_filter_process_group_insert())); - hSubLayout->addWidget(ppbInsert); - QPushButton *ppbDelete = new QPushButton("Delete"); - connect(ppbDelete, SIGNAL(released()),this, SLOT(on_filter_process_group_delete())); - hSubLayout->addWidget(ppbDelete); - QPushButton *ppbModify = new QPushButton("Modify"); - connect(ppbModify, SIGNAL(released()),this, SLOT(on_filter_process_group_modify())); - hSubLayout->addWidget(ppbModify); - v_0_Layout->addLayout(hSubLayout); - } - h_0_Layout->addLayout(v_0_Layout); - } - - { - QVBoxLayout *v_0_Layout = new QVBoxLayout; - v_0_Layout->addWidget(new QLabel("Process List")); - m_plwProcess = new QListWidget; - v_0_Layout->addWidget(m_plwProcess); - { - QHBoxLayout *hSubLayout = new QHBoxLayout; - hSubLayout->addWidget(new QLabel("Timer(Minute): ")); - m_pleExcutionTime = new QLineEdit; - m_pleExcutionTime->setValidator( new QIntValidator(1, 100000, this)); - m_pleExcutionTime->setText("60"); - m_pleExcutionTime->setFixedWidth(50); - hSubLayout->addWidget(m_pleExcutionTime); - - hSubLayout->addWidget(new QLabel("Influencer Limit: ")); - m_pleInfluencerLimitFrom = new QLineEdit; - m_pleInfluencerLimitFrom->setValidator( new QIntValidator(1, 100000, this)); - m_pleInfluencerLimitFrom->setText("1"); - m_pleInfluencerLimitFrom->setFixedWidth(40); - m_pleInfluencerLimitTo = new QLineEdit; - m_pleInfluencerLimitTo->setValidator( new QIntValidator(1, 100000, this)); - m_pleInfluencerLimitTo->setText("500"); - m_pleInfluencerLimitTo->setFixedWidth(40); - - hSubLayout->addWidget(m_pleInfluencerLimitFrom); - hSubLayout->addWidget(m_pleInfluencerLimitTo); - - v_0_Layout->addLayout(hSubLayout); - } - - { - QHBoxLayout *hSubLayout = new QHBoxLayout; - QPushButton *ppbInsert = new QPushButton("Insert"); - connect(ppbInsert, SIGNAL(released()),this, SLOT(on_process_insert())); - hSubLayout->addWidget(ppbInsert); - QPushButton *ppbDelete = new QPushButton("Delete"); - connect(ppbDelete, SIGNAL(released()),this, SLOT(on_process_delete())); - hSubLayout->addWidget(ppbDelete); - QPushButton *ppbStart = new QPushButton("Start"); - connect(ppbStart, SIGNAL(released()),this, SLOT(on_process_start())); - hSubLayout->addWidget(ppbStart); - QPushButton *ppbStop = new QPushButton("Stop"); - connect(ppbStop, SIGNAL(released()),this, SLOT(on_process_stop())); - hSubLayout->addWidget(ppbStop); - - v_0_Layout->addLayout(hSubLayout); - } - h_0_Layout->addLayout(v_0_Layout); - } - vLayout->addLayout(h_0_Layout); - - { - vLayout->addWidget(new QLabel("Filter Process")); - m_plwFilterProcess = new QListWidget; - vLayout->addWidget(m_plwFilterProcess); - } - } - { - QHBoxLayout *hLayoutEdit = new QHBoxLayout; - { - QPushButton *ppbLoad = new QPushButton("Load"); - connect(ppbLoad, SIGNAL(released()),this, SLOT(on_load())); - hLayoutEdit->addWidget(ppbLoad); - } - { - QPushButton *ppbCategory = new QPushButton("Category Make"); - connect(ppbCategory, SIGNAL(released()),this, SLOT(on_category())); - hLayoutEdit->addWidget(ppbCategory); - } - { - QPushButton *ppbSend = new QPushButton("Send"); - connect(ppbSend, SIGNAL(released()),this, SLOT(on_send())); - hLayoutEdit->addWidget(ppbSend); - } - /* - { - QPushButton *ppbCount = new QPushButton("Influence Count"); - connect(ppbCount, SIGNAL(released()),this, SLOT(on_influence_count())); - hLayoutEdit->addWidget(ppbCount); - } - { - QPushButton *ppbCount = new QPushButton("Spammers Count"); - connect(ppbCount, SIGNAL(released()),this, SLOT(on_spammers_count())); - hLayoutEdit->addWidget(ppbCount); - } - { - QPushButton *ppbCount = new QPushButton("Power Cafe Count"); - connect(ppbCount, SIGNAL(released()),this, SLOT(on_power_cafe_count())); - hLayoutEdit->addWidget(ppbCount); - } - { - //QPushButton *ppbCount = new QPushButton("Consumer Supervison Count"); - //connect(ppbCount, SIGNAL(released()),this, SLOT(on_consumer_supervison_count())); - //hLayoutEdit->addWidget(ppbCount); - } - */ - { - 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_statusTimer, SIGNAL(timeout()), this, SLOT(time_update())); - connect(&m_executionTimer, SIGNAL(timeout()), this, SLOT(time_execute())); - //m_pThread = new SGetThread; - setLayout(vMainLayout); - //m_pPutThread = new SPutThread[QThread::idealThreadCount()]; - if (ReloadSetup() == false) - { - InsertLog("setup.ini don't find"); - } - m_db = QSqlDatabase::addDatabase("QMYSQL"); - //m_statusTimer.start(5000); - Refresh(); - for(int i = 0; i < D_PROCESS_MAX ;i++) - { - connect(&m_aProcess[i],SIGNAL(readyReadStandardOutput()),SLOT(process_output())); - } -} - -Widget::~Widget() -{ - for (int i = 0; i < D_PROCESS_MAX;i++) - Kill(i); - exit(0); -} - -void Widget::InsertLog(QString str) -{ - if(str[str.length()-1] == QChar('\n')) - str = str.mid(0, str.length()-1); - - 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(); -} - -bool Widget::ReloadSetup() -{ - QSettings settings(QString("setup.ini"), QSettings::IniFormat); - settings.setIniCodec("UTF-8"); - settings.beginGroup(QString("database")); - if (settings.childKeys().size() == 0) return false; - m_strWebDataBaseHost = settings.value("host").toString(); - m_strWebDataBaseUser = settings.value("user").toString(); - m_strWebDataBasePass = settings.value("pass").toString(); - m_strWebDataBaseName = settings.value("name").toString(); - settings.endGroup(); - return true; -} - - -void Widget::Refresh() -{ - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) - { - InsertLog(m_db.lastError().text()); - return; - } - - for (int i = 0; i < E_LIST_MAX ; i++) - m_plw[i].clear(); - - { - QSqlQuery query("select id,name,locked from filtergroup"); - while (query.next()) - { - QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString() + - ((query.value(2).toInt() == 0)? "" : " (Locked)") - ,&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() + QString("(") + query.value(0).toString() + QString(")") ,&m_plw[E_LIST_DATA]); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - } - { - m_plwFilterProcessGroup->clear(); - QSqlQuery query("select id,name,state from filterprocessgroup"); - while (query.next()) - { - QString str; - str = query.value(1).toString(); - /*switch(query.value(2).toInt()) - { - case 0:str += " (idle)";break; - case 1:str += " (warking)";break; - } - */ - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcessGroup); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - } - m_db.close(); - FilterProcssRefresh("-1"); - - m_db.setHostName(m_strWebDataBaseHost); - m_db.setUserName(m_strWebDataBaseUser); - m_db.setPassword(m_strWebDataBasePass); - m_db.setDatabaseName(m_strWebDataBaseName); - - if (m_db.open() == false) - { - InsertLog(m_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))); - } - } - m_db.close(); -} - -void Widget::CompanyItemChanged(QListWidgetItem* _current,QListWidgetItem*) -{ - if (_current == 0) return; - m_db.setHostName(m_strWebDataBaseHost); - m_db.setUserName(m_strWebDataBaseUser); - m_db.setPassword(m_strWebDataBasePass); - m_db.setDatabaseName(m_strWebDataBaseName); - if (m_db.open() == false) - { - InsertLog(m_db.lastError().text()); - return; - } - m_plw[E_LIST_CATALOG].clear(); - - int nServiceCnt[E_SERVICE_MAX] = {0}; - - QSqlQuery query("select num,name,servicenum FROM category where company_num = '" +_current->data(Qt::UserRole).toString()+ "' order by servicenum asc, num asc"); - while(query.next()) - { - int num = query.value(0).toInt(); - int servicenum = query.value(2).toInt(); - QString name = query.value(1).toString(); - QString strService; - - - switch (servicenum - 1) - { - case E_SERVICE_INFLUENCER: - { - /* - if (0 == nServiceCnt[E_SERVICE_INFLUENCER]++) - continue; - */ - strService = "[Influencer]"; - break; - } - case E_SERVICE_CONSUMER: - { - /* - if (0 == nServiceCnt[E_SERVICE_CONSUMER]++) - continue; - */ - strService = "[Consumer]"; - break; - } - case E_SERVICE_SPAMMER: - { - /* - if (0 == nServiceCnt[E_SERVICE_SPAMMER]++) - continue; - */ - strService = "[Spammer]"; - break; - } - case E_SERVICE_POWERCAFE: - { - /* - if (0 == nServiceCnt[E_SERVICE_POWERCAFE]++) - continue; - */ - strService = "[Powercafe]"; - break; - } - default: - { - continue; - } - } - - QListWidgetItem *pItem = new QListWidgetItem(strService + ":" + name ,&m_plw[E_LIST_CATALOG]); - - QList qlist; - qlist.append(QVariant(num)); - qlist.append(QVariant(servicenum)); - pItem->setData(Qt::UserRole, QVariant(qlist)); - } - m_db.close(); -} - -void Widget::on_filter_process_group_insert() -{ - if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) InsertLog(m_db.lastError().text()); - QSqlQuery query; - QString strQuery; - strQuery = "insert into filterprocessgroup (name) value ('" + m_pleFilterProcessGroup->text() + "')"; - if(query.exec(strQuery.toUtf8()) == false) {InsertLog(query.lastError().text());} - m_db.close(); - - Refresh(); -} - -void Widget::on_filter_process_group_delete() -{ - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) InsertLog(m_db.lastError().text()); - - foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) - { - QSqlQuery query; - QString strQuery; - strQuery = "delete from filterprocessgroup where id = " + item->data(Qt::UserRole).toString(); - if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} - strQuery = "delete from filterprocess where filterprocessgroup_id = " + item->data(Qt::UserRole).toString(); - if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} - } - m_db.close(); - Refresh(); -} - -void Widget::on_filter_process_group_modify() -{ - if (m_pleFilterProcessGroup->text().trimmed().isEmpty()) return; - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) InsertLog(m_db.lastError().text()); - - foreach (QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) - { - QSqlQuery query; - QString strQuery; - strQuery = "update filterprocessgroup set name = '" + m_pleFilterProcessGroup->text().trimmed() + "' where id = " + item->data(Qt::UserRole).toString(); - if(query.exec(strQuery.toUtf8()) == false) {qDebug() << strQuery ; InsertLog(query.lastError().text());} - } - m_db.close(); - Refresh(); -} - -void Widget::FilterProcessGroupClicked(QListWidgetItem* _item) -{ - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) - { - InsertLog(m_db.lastError().text()); - return; - } - m_pleFilterProcessGroup->setText(_item->text()); - FilterProcssRefresh(_item->data(Qt::UserRole).toString()); - m_db.close(); -} - -struct SFilterProcess -{ - QString m_strID; - QString m_strName; -}; - -void Widget::InsertFilterProcess(int _nProcessType) -{ - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - - if (m_db.open() == false) - { - InsertLog(m_db.lastError().text()); - return; - } - SFilterProcess astProcessFilter[E_LIST_MAX] = {{"datagroup_id","datagroup_name"}, - {"filtergroup_id","filtergroup_name"}, - {"company_num","company_name"}, - {"category_num","category_name"}}; - QSqlQuery query; - QString strSelect; - foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) - { - QString strQuery = "insert into filterprocess set "; - strQuery += "filterprocess_type = " + QString::number(_nProcessType) + ","; - strSelect = itemProcessGroup->data(Qt::UserRole).toString(); - strQuery += "filterprocessgroup_id = " + strSelect + ","; - for(int i = 0; i < E_LIST_MAX; i++) - { - foreach (QListWidgetItem *item,m_plw[i].selectedItems()) - { - if (i == E_LIST_CATALOG) - { - QList qlist = item->data(Qt::UserRole).toList(); - int nCategory = qlist.at(0).toInt(); - int nService = qlist.at(1).toInt(); - strQuery += astProcessFilter[i].m_strID + "="; - strQuery += QString::number(nCategory) + ","; - strQuery += astProcessFilter[i].m_strName + "='"; - strQuery += item->text() + "',"; - strQuery += "service_num = " + QString::number(nService) + ","; - } - else - { - strQuery += astProcessFilter[i].m_strID + "="; - strQuery += item->data(Qt::UserRole).toString() + ","; - strQuery += astProcessFilter[i].m_strName + "='"; - strQuery += item->text() + "',"; - } - - } - } - strQuery = strQuery.left(strQuery.size()-1); - if(query.exec(strQuery.toUtf8()) == false) - { - InsertLog(query.lastError().text()); - qDebug() << strQuery; - } - } - m_db.close(); - if (strSelect.isEmpty() == false) - FilterProcssRefresh(strSelect); -} - -void Widget::on_load() -{ - InsertFilterProcess(E_PROCSS_TYPE_LOAD); -} - -void Widget::on_send() -{ - InsertFilterProcess(E_PROCSS_TYPE_SEND); -} - -void Widget::on_category() -{ - InsertFilterProcess(E_PROCSS_TYPE_CATEGORY_MAKE); -} - -void Widget::on_influence_count() -{ - InsertFilterProcess(E_PROCSS_TYPE_INFLUENCE_COUNT); -} - -void Widget::on_spammers_count() -{ - InsertFilterProcess(E_PROCSS_TYPE_SPAMMERS_COUNT); -} - -void Widget::on_power_cafe_count() -{ - InsertFilterProcess(E_PROCSS_TYPE_POWER_CAFE_COUNT); -} - -void Widget::on_consumer_supervison_count() -{ - //ConsumerSupervisionCount(); -} - -void Widget::on_delete() -{ - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) - { - InsertLog(m_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()); - } - } - m_db.close(); - - foreach (QListWidgetItem *itemProcessGroup,m_plwFilterProcessGroup->selectedItems()) - FilterProcssRefresh(itemProcessGroup->data(Qt::UserRole).toString()); -} - -void Widget::FilterProcssRefresh(QString _strGroupID) -{ - qDebug() << __FILE__ << __LINE__; - m_db.setHostName("bigbird.iptime.org"); - m_db.setUserName("admin"); - m_db.setPassword("admin123"); - m_db.setDatabaseName("concepters"); - if (m_db.open() == false) - { - InsertLog(m_db.lastError().text()); - return; - } - QString sql("select id,filterprocess_type,filterprocess_order,datagroup_id,datagroup_name,filtergroup_name,company_name,category_name from filterprocess where filterprocessgroup_id = " + _strGroupID); - QSqlQuery query; - if(query.exec(sql) == false) - { - InsertLog(query.lastError().text()); - } - m_plwFilterProcess->clear(); - while(query.next()) - { - QString str; - switch(query.value(1).toInt()) - { - case E_PROCSS_TYPE_LOAD: - str += "Loading : Data ["; - str += query.value(4).toString(); - str += "]"; - break; - case E_PROCSS_TYPE_CATEGORY_MAKE: - str += "Category filter ["; - str += query.value(5).toString(); - str += "] Make Category ["; - str += query.value(7).toString(); - str += "]"; - break; - case E_PROCSS_TYPE_SEND: - str += "Send : Company ["; - str += query.value(6).toString(); - str += "]"; - break; - case E_PROCSS_TYPE_INFLUENCE_COUNT: - str += "Influence Count filter [" ; - str += query.value(5).toString(); - str += "] and Send : Company ["; - str += query.value(6).toString(); - str += "]"; - break; - case E_PROCSS_TYPE_SPAMMERS_COUNT: - str += "Spammers Count filter [" ; - str += query.value(5).toString(); - str += "] and Send : Company ["; - str += query.value(6).toString(); - str += "]"; - break; - case E_PROCSS_TYPE_POWER_CAFE_COUNT: - str += "Power Cafe Count filter [" ; - str += query.value(5).toString(); - str += "] and Send : Company ["; - str += query.value(6).toString(); - str += "]"; - break; - } - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilterProcess); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - m_db.close(); -} - -void Widget::on_refresh() -{ - Refresh(); -} - -void Widget::time_update() -{ - process_refresh(); -} - -void Widget::process_refresh() -{ - m_plwProcess->clear(); - for(int i = 0; i < D_PROCESS_MAX; i++) - { - if (m_aProcess[i].arguments().size() == 0) continue; - QString str = m_aProcess[i].arguments().at(1); - str += "["+m_aProcess[i].arguments().at(2)+"] "; - - switch(m_aProcess[i].state()) - { - case QProcess::NotRunning:str += "(Wait)";break; - case QProcess::Running:str += "(Run)";break; - case QProcess::Starting:str += "(Start)";break; - } - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwProcess); - pItem->setData(Qt::UserRole, QVariant(m_aProcess[i].arguments().at(0))); - } - -} - -void Widget::on_process_insert() -{ - foreach(QListWidgetItem *item,m_plwFilterProcessGroup->selectedItems()) - { - QStringList strlist; - strlist.append(item->data(Qt::UserRole).toString()); - strlist.append(item->text().trimmed()); - strlist.append(m_pleInfluencerLimitFrom->text() + "~" + m_pleInfluencerLimitTo->text()); - for (int i = 0; i < D_PROCESS_MAX;i++) - { - if (m_aProcess[i].arguments().size() == 0) - { - -#if defined(Q_OS_WIN32) - m_aProcess[i].setProgram("FilterProcess.exe"); - -#else - m_aProcess[i].setProgram("./FilterProcess"); - -#endif - m_aProcess[i].setArguments(strlist); - break; - } - } - } - process_refresh(); -} - -void Widget::on_process_start() -{ - bool ok; - int time = m_pleExcutionTime->text().toInt(&ok); - if(!ok) - return; - - if (m_statusTimer.isActive() == false) - m_statusTimer.start(5000); - - if (m_executionTimer.isActive() == false) - m_executionTimer.start(time*MINUTE); - - time_update(); - time_execute(); -} - -void Widget::on_process_stop() -{ - if (m_statusTimer.isActive() == true) - m_statusTimer.stop(); - if (m_executionTimer.isActive() == true) - m_executionTimer.stop(); - - process_refresh(); -} - -void Widget::on_process_delete() -{ - foreach(QListWidgetItem *item,m_plwProcess->selectedItems()) - { - for (int i = 0; i < D_PROCESS_MAX;i++) - { - if (m_aProcess[i].arguments().size() > 0 && m_aProcess[i].arguments().at(0) == item->data(Qt::UserRole).toString()) - { - Kill(i); - m_aProcess[i].setArguments(QStringList()); - process_refresh(); - return; - } - } - } -} - - -void Widget::time_execute() -{ - for(int i = 0; i < D_PROCESS_MAX; i++) - { - if (m_aProcess[i].arguments().size() == 0) continue; - - switch(m_aProcess[i].state()) - { - case QProcess::NotRunning: m_aProcess[i].start(); - break; - } - } - - process_refresh(); -} - -void Widget::process_output() -{ - QProcess *pPro = (QProcess*)sender(); - QString str = pPro->readAllStandardOutput(); - InsertLog(str); -} - -void Widget::Kill(int _nProcess) -{ - if (m_aProcess[_nProcess].state() == QProcess::Running) - { - m_aProcess[_nProcess].kill(); - m_aProcess[_nProcess].waitForFinished(); - m_aProcess[_nProcess].setArguments(QStringList()); - } -} diff --git a/FilterProcess/FilterProcess.pro b/FilterProcess/FilterProcess.pro index ceb8e0d..3c31ee0 100644 --- a/FilterProcess/FilterProcess.pro +++ b/FilterProcess/FilterProcess.pro @@ -12,7 +12,6 @@ CONFIG -= app_bundle TEMPLATE = app - SOURCES += main.cpp \ sdbmanager.cpp \ sinitializer.cpp \ diff --git a/FilterProcess/main.cpp b/FilterProcess/main.cpp index 0d81cc5..4dd87d4 100644 --- a/FilterProcess/main.cpp +++ b/FilterProcess/main.cpp @@ -25,10 +25,14 @@ int main(int argc, char *argv[]) return -1; } + QString strFilterProcessGroupID = argv[1]; + QString strFilterProcessGroupName = argv[2]; + QString strInfluencerLimit = argv[3]; + a.processEvents(); - if (!filter.init(argv[1], argv[2], argv[3])) - //if (!filter.init(QString::number(370), "Check")) + + if (!filter.init(strFilterProcessGroupID, strFilterProcessGroupName, strInfluencerLimit)) { cout << "filter init error" << endl; exit(1); diff --git a/FilterProcess/sconsumer.cpp b/FilterProcess/sconsumer.cpp index 9653ae3..eb11a2b 100644 --- a/FilterProcess/sconsumer.cpp +++ b/FilterProcess/sconsumer.cpp @@ -350,33 +350,6 @@ str += QString::number(stbody.sharecount) + ","; return true; } -void SConsumer::SReplyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) -{ - int num = 0; - const QStringList* orderedUrl = _datagroup.getOrderedUrl(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - const stReal& streal = iterPos.value(); - foreach (const QString& strUrl, *orderedUrl) - { - if (streal.m_setRealAllUrl.contains(strUrl)) - { - if (_datagroup.getstBody(strUrl)->replycount == 0) - continue; - - const QMap* mapReply = _datagroup.getstReply(strUrl); - - for(QMap::const_iterator iterPos1 = mapReply->constBegin(); iterPos1 != mapReply->constEnd(); iterPos1++) - { - stReplyConsumerMap streply; - streply.num = num++; - streply.category_num = iterPos.key(); - } - } - } - } -} - QString SConsumer::SStatsJson::getStatsJsonBySubtitle(QString _subtitle) { foreach (stStatsJson statsJson, m_listMap) diff --git a/FilterProcess/sconsumer.h b/FilterProcess/sconsumer.h index ef9ff82..223b7f0 100644 --- a/FilterProcess/sconsumer.h +++ b/FilterProcess/sconsumer.h @@ -7,179 +7,134 @@ class SConsumer:public SService { public: - struct stReal - { - QSet m_setRealAllUrl; - QSet m_setRealBodyUrl; - QMap m_mapRealReplyUniqueUrl; //multiple - }; - struct stBodyConsumerMap - { - int num; - int body_num; - int category_num; - int realin; - int platformname_num; - int platformform_num; - QString date; - int replycount; - int view; - int likecount; - int sharecount; - int id_num; - int community_num; - int nickname_num; - stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0), - replycount(0), view(0), likecount(0), sharecount(0), id_num(0), community_num(0), nickname_num(0){} - }; - struct stReplyConsumerMap - { - int num; - int reply_num; - int body_num; - int id_num; - int category_num; - int realin; - stReplyConsumerMap():num(0), reply_num(0), body_num(0), id_num(0), category_num(0), realin(0) {} - }; - /* - struct stStatsConUserBuzzybyday - { - int category[11]; - QDate date; - QString subject; - int company_num; - stStatsConUserBuzzybyday():company_num(0) - { - for (int i = 0; i < 11; i++) - category[i] = 0; - } - }; - */ - struct stStatsJson - { - int company_num; - int servicenum; - QString title; - QString subtitle; - int platformname_num; - QString jdata; - int category_num; - stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){} - }; - struct stBuzzy - { - int m_nCategory; - QMap m_mapBodyBuzz; - QMap m_mapReplyBuzz; - }; + struct stReal + { + QSet m_setRealAllUrl; + QSet m_setRealBodyUrl; + QMap m_mapRealReplyUniqueUrl; //multiple + }; - class SBodyConsumerMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool changeTable(QSqlDatabase& _db, const int &_nCompany); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear() { m_listMap.clear(); } - }; - class SReplyConsumerMap // Why did you define this? - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool changeTable(QSqlDatabase& _db, const int &_nCompany); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear(){ m_listMap.clear(); } + struct stBodyConsumerMap + { + stBodyConsumerMap():num(0), body_num(0), category_num(0), realin(0), platformname_num(0), platformform_num(0), + replycount(0), view(0), likecount(0), sharecount(0), id_num(0), community_num(0), nickname_num(0){} - }; - /* - class SStatsConUserBuzzybyday - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - //bool changeTable(QSqlDatabase& _db, const int &_nCompany); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear(){ m_listMap.clear(); } - }; - */ + int num; + int body_num; + int category_num; + int realin; + int platformname_num; + int platformform_num; + QString date; + int replycount; + int view; + int likecount; + int sharecount; + int id_num; + int community_num; + int nickname_num; + }; - class SStatsJson - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + struct stReplyConsumerMap + { + stReplyConsumerMap():num(0), reply_num(0), body_num(0), id_num(0), category_num(0), realin(0) {} - private: - QString getStatsJsonBySubtitle(QString _subtitle); + int num; + int reply_num; + int body_num; + int id_num; + int category_num; + int realin; + }; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - bool SaveDataFile(const int &_nCompany); - void clear(){ m_listMap.clear(); } - }; + struct stStatsJson + { + stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){} -private: - SFilterAlgorithm m_SFilterAlgorithm; - QMap m_mapCategory; - SBodyConsumerMap m_SBodyConsumerMap; - //SStatsConUserBuzzybyday m_SStatsConUserBuzzybyday; - SStatsJson m_SStatsJson; + int company_num; + int servicenum; + QString title; + QString subtitle; + int platformname_num; + QString jdata; + int category_num; + }; + + struct stBuzzy + { + int m_nCategory; + QMap m_mapBodyBuzz; + QMap m_mapReplyBuzz; + }; + + class SBodyConsumerMap + { + public: + void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool changeTable(QSqlDatabase& _db, const int &_nCompany); + bool uploadData(QSqlDatabase& _db, const int &_nCompany); + void clear() { m_listMap.clear(); } + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + }; + + class SStatsJson + { + public: + void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase& _db, const int &_nCompany); + bool SaveDataFile(const int &_nCompany); + void clear(){ m_listMap.clear(); } + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + QString getStatsJsonBySubtitle(QString _subtitle); + }; public: - virtual void setInitiaizer(SInitializer &_initializer); - virtual bool uploadData(int _companyNum); - virtual bool SaveDataFile(int _companyNum); - virtual bool changeTable(int _companyNum); - virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); - virtual bool makeOverallCategory(int _nCategory); - virtual bool makeTable(SDatagroup &_datagroup); -}; + virtual void setInitiaizer(SInitializer &_initializer); + virtual bool uploadData(int _companyNum); + virtual bool SaveDataFile(int _companyNum); + virtual bool changeTable(int _companyNum); + virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); + virtual bool makeOverallCategory(int _nCategory); + virtual bool makeTable(SDatagroup &_datagroup); +private: + SFilterAlgorithm m_SFilterAlgorithm; + QMap m_mapCategory; + SBodyConsumerMap m_SBodyConsumerMap; + SStatsJson m_SStatsJson; + +}; class SConsumerAssist:public SService { public: - virtual void setInitiaizer(SInitializer &_initializer) - { - m_pSInitializer = &_initializer; - } - virtual bool uploadData(int _companyNum){ return true; } - virtual bool changeTable(int _companyNum){ return true; } - virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter){ return true; } - virtual bool makeOverallCategory(int _nCategory){ return true; } - virtual bool makeTable(SDatagroup &_datagroup){return true;} + virtual void setInitiaizer(SInitializer& _initializer) { m_pSInitializer = &_initializer; } + virtual bool uploadData(int /*_companyNum*/){ return true; } + virtual bool changeTable(int /*_companyNum*/){ return true; } + virtual bool makeCategory(SDatagroup& /*_datagroup*/, int /*_nCategory*/, const QList &/*_listFilter*/){ return true; } + virtual bool makeOverallCategory(int /*_nCategory*/){ return true; } + virtual bool makeTable(SDatagroup &/*_datagroup*/){return true;} }; class SConsumerMarketer:public SConsumerAssist { public: - - virtual bool makeTable(SDatagroup &_datagroup); + virtual bool makeTable(SDatagroup &_datagroup); }; - class SConsumerCheckList:public SConsumerAssist { public: - - virtual bool makeTable(SDatagroup &_datagroup); + virtual bool makeTable(SDatagroup &_datagroup); }; - - #endif // SCONSUMER - diff --git a/FilterProcess/sconsumerstatistics.cpp b/FilterProcess/sconsumerstatistics.cpp index 7415673..cf8b590 100644 --- a/FilterProcess/sconsumerstatistics.cpp +++ b/FilterProcess/sconsumerstatistics.cpp @@ -130,6 +130,9 @@ stConsumerCategoryStatistics& SCousumerStatistics::getCategory(QString _strCateg if (iter->categoryName == _strCategoryName) return *iter; } + + static stConsumerCategoryStatistics empty; + return empty; } bool SCousumerStatistics::hasCategory(QString _strCategoryName) diff --git a/FilterProcess/sconsumerstatistics.h b/FilterProcess/sconsumerstatistics.h index ae166bb..b38af84 100644 --- a/FilterProcess/sconsumerstatistics.h +++ b/FilterProcess/sconsumerstatistics.h @@ -11,52 +11,52 @@ struct stCountInfo { - int allCount; - int bodyCount; - int replyCount; + int allCount; + int bodyCount; + int replyCount; }; struct stConsumerCategoryStatistics { - QString categoryName; - QMap mapCountInfoOfDate; + QString categoryName; + QMap mapCountInfoOfDate; }; class SCousumerStatistics { private: - QJsonArray m_BodyJsonArray; - QJsonArray m_ReplyJsonArray; - QJsonArray m_AllJsonArray; + QJsonArray m_BodyJsonArray; + QJsonArray m_ReplyJsonArray; + QJsonArray m_AllJsonArray; - QList m_listBanCategoryName; + QList m_listBanCategoryName; - QList m_listConsumerCategoryStatistics; + QList m_listConsumerCategoryStatistics; private: - QJsonArray convertStringToJsonArray(QString _strJson); - QString getCategoryNameFromJsonObject(QJsonObject _jsonObject); - QJsonArray getDataArrayFromJsonDocument(QJsonDocument _jsonDocument); - QJsonArray getValueArrayFromJsonObject(QJsonObject _jsonObject); + QJsonArray convertStringToJsonArray(QString _strJson); + QString getCategoryNameFromJsonObject(QJsonObject _jsonObject); + QJsonArray getDataArrayFromJsonDocument(QJsonDocument _jsonDocument); + QJsonArray getValueArrayFromJsonObject(QJsonObject _jsonObject); - void setBanCategoryName(); - void makeConsumerStatistics(); - void makeBodyStatistics(); - void makeReplyStatistics(); - void makeAllStatistics(); + void setBanCategoryName(); + void makeConsumerStatistics(); + void makeBodyStatistics(); + void makeReplyStatistics(); + void makeAllStatistics(); - bool hasCategory(QString _strCategoryName); - bool isBanCategory(QString _strCategoryName); - bool isLastDayOfMonth(QString _strDate); - stConsumerCategoryStatistics& getCategory(QString _strCategoryName); - stConsumerCategoryStatistics createCategory(QString _strCategoryName); - void sumBodyAndReplyCount(stConsumerCategoryStatistics& _consumerCategoryStatistics); + bool hasCategory(QString _strCategoryName); + bool isBanCategory(QString _strCategoryName); + bool isLastDayOfMonth(QString _strDate); + stConsumerCategoryStatistics& getCategory(QString _strCategoryName); + stConsumerCategoryStatistics createCategory(QString _strCategoryName); + void sumBodyAndReplyCount(stConsumerCategoryStatistics& _consumerCategoryStatistics); public: - SCousumerStatistics(QString _strBodyJson, QString _strReplyJson, QString _strAllJson); - void print(); - void print2(); + SCousumerStatistics(QString _strBodyJson, QString _strReplyJson, QString _strAllJson); + void print(); + void print2(); - bool saveCousumerStatisticsToExcelFile(int _nCompany); + bool saveCousumerStatisticsToExcelFile(int _nCompany); }; #endif // SCOUSUMERSTATISTICS_H diff --git a/FilterProcess/sdatagroup.cpp b/FilterProcess/sdatagroup.cpp index 7247169..d86f86e 100644 --- a/FilterProcess/sdatagroup.cpp +++ b/FilterProcess/sdatagroup.cpp @@ -1433,44 +1433,6 @@ bool SDatagroup::SCommunity::changeTable(QSqlDatabase &_db, const int &_nCompany } return true; } -/* -bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany) -{ - //_db.transaction(); - QString strQuery; - strQuery = "delete from community_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - //m_pSInitializer->insertLog(query.lastQuery()); - //m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = QString("insert into community_" + QString::number(_nCompany) + - "_update (num,id,title,url,exid,platformname_num,platformform_num) values (:NUM,:ID,:TITLE,:URL,:EXID,:PLATFORMNAME_NUM,:PLATFORMFORM_NUM)"); - query.prepare(strQuery); - - foreach (const stCommunity& stcommunity, m_mapCommunity.values()) - { - query.bindValue(":NUM", stcommunity.num); - query.bindValue(":ID", stcommunity.id); - query.bindValue(":TITLE", sqlString(stcommunity.title).replace(QChar(160),"")); - query.bindValue(":URL", stcommunity.url); - query.bindValue(":EXID", stcommunity.exid); - query.bindValue(":PLATFORMNAME_NUM", stcommunity.platformname_num); - query.bindValue(":PLATFORMFORM_NUM", stcommunity.platformform_num); - - if (!query.exec()) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; -} -*/ - bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany) { @@ -1479,9 +1441,7 @@ bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany) strQuery = "delete from community_" + QString::number(_nCompany) + "_update"; QSqlQuery query(_db); if (query.exec(strQuery.toUtf8()) == false) - { - //m_pSInitializer->insertLog(query.lastQuery()); - //m_pSInitializer->insertLog(query.lastError().text()); + { return false; } strQuery = QString("insert into community_" + QString::number(_nCompany) + @@ -1508,7 +1468,6 @@ bool SDatagroup::SCommunity::uploadData(QSqlDatabase &_db, const int &_nCompany) return true; } - void SDatagroup::SCommunity::put(const QString &_strKey, const stCommunity &_stcommunity) { m_mapCommunity.insert(_strKey.trimmed(), _stcommunity); @@ -1523,5 +1482,3 @@ void SDatagroup::SCommunity::clear() { m_mapCommunity.clear(); } - - diff --git a/FilterProcess/sdatagroup.h b/FilterProcess/sdatagroup.h index fa73b4d..1fe8908 100644 --- a/FilterProcess/sdatagroup.h +++ b/FilterProcess/sdatagroup.h @@ -16,285 +16,282 @@ QString UniCodeToEucKr(const QString& _strData); class SDatagroup { public: - enum E_ARTICLE - { - E_ARTICLE_BODY = 0, - E_ARTICLE_REPLY, - E_ARTICLE_MAX, - }; - struct stBody - { - int num; - int id_num; - QString id_id; - int nickname_num; - int community_num; - int platformname_num; - int platformform_num; - QString* title; - QString* data; - QString url; - int view; - QString date; - int replystartnum; - int replyendnum; - int replycount; - int like; - int share; - QVector realbycategorynum; + enum E_ARTICLE + { + E_ARTICLE_BODY = 0, + E_ARTICLE_REPLY, + E_ARTICLE_MAX, + }; + struct stBody + { + stBody():replyendnum(-1), replystartnum(-1), replycount(0), share(0), like(0) {} + int num; + int id_num; + QString id_id; + int nickname_num; + int community_num; + int platformname_num; + int platformform_num; + QString* title; + QString* data; + QString url; + int view; + QString date; + int replystartnum; + int replyendnum; + int replycount; + int like; + int share; + QVector realbycategorynum; - QString lastupdate; - QString community_title; - QString community_url; - QString community_id; - QString community_exid; - QString platformname_name; - QString platformform_form; - QString nickname_nickname; - QString nickname_exnickname; + QString lastupdate; + QString community_title; + QString community_url; + QString community_id; + QString community_exid; + QString platformname_name; + QString platformform_form; + QString nickname_nickname; + QString nickname_exnickname; - //QSet realbycategorynum; - stBody():replyendnum(-1), replystartnum(-1), replycount(0), share(0), like(0) {} - }; + }; - struct stReply - { - int num; - int id_num; - QString id_id; - int nickname_num; - int community_num; - int body_num; - QString parent; - QString* data; - QString date; - QVector realbycategorynum; + struct stReply + { + stReply():num(0),id_num(0),nickname_num(0),community_num(0),body_num(0),platformname_num(0),platformform_num(0){} + int num; + int id_num; + QString id_id; + int nickname_num; + int community_num; + int body_num; + QString parent; + QString* data; + QString date; + QVector realbycategorynum; - int platformname_num; - int platformform_num; - QString platformname_name; - QString platformform_form; - QString nickname_nickname; - QString nickname_exnickname; - QString body_date; - //QSet realbycategorynum; - stReply():num(0),id_num(0),nickname_num(0),community_num(0),body_num(0),platformname_num(0),platformform_num(0){} - }; - struct stCommunity - { - int num; - QString id; - QString exid; - QString title; - QString url; - int platformname_num; - int platformform_num; - stCommunity():num(0), platformform_num(1), platformname_num(1), title("(none)"), url(" "), id(" "), exid(" ") {} - }; - struct stId - { - int num; - QString id; - int platformname_num; - stId():num(0), id("(none)"), platformname_num(1) {} - }; - struct stNickname - { - int num; - QString nickname; - int id_num; - int platformname_num; - stNickname():num(0), platformname_num(0) {} - }; - struct stProfileurlKey - { - int m_nPlatformForm; - QString m_strId; - stProfileurlKey(int _nPlatform, const QString& _strId):m_nPlatformForm(_nPlatform), m_strId(_strId) {} - bool operator<(const stProfileurlKey& other) const - { - if (m_nPlatformForm < other.m_nPlatformForm) - { - return true; - } - else if ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId < other.m_strId)) - { - return true; - } - else - { - return false; - } - } - bool operator==(const stProfileurlKey &other) const - { - if ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId == other.m_strId)) - return true; - else - return false; - } - }; + int platformname_num; + int platformform_num; + QString platformname_name; + QString platformform_form; + QString nickname_nickname; + QString nickname_exnickname; + QString body_date; + }; + struct stCommunity + { + stCommunity():num(0), platformform_num(1), platformname_num(1), title("(none)"), url(" "), id(" "), exid(" ") {} - class SBody - { - private: - //QList m_listBody; - SInitializer *m_pSInitializer; - QMap m_mapBody; - public: - void put(const QString& _url, const stBody& _stbody); - bool putCategory(const QString& _url, const int& _nCategory); - bool uploadData(QSqlDatabase &_db, const int& _nCompany, const QStringList& _order); - bool changeTable(QSqlDatabase &_db, const int& nCompany); - int getBodyNum(const QString& _url); - QString vecToString(const QVector& _realbycategorynum); - QString vecToString(const QSet &_realbycategorynum); - void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } - stBody* get(const QString& _url); - void clear(); -// int getBodyCount(); -// int getUserCount(); -// QMap getMapBodyCountOfPlatform(); -// QMap getMapUserCountOfPlatform(); - }; + int num; + QString id; + QString exid; + QString title; + QString url; + int platformname_num; + int platformform_num; + }; - class SReply - { - private: - //QList m_listReply; - SInitializer *m_pSInitializer; - QMap > m_mapReply; - public: - void put(const QString& _url, const int& _order, const stReply& _streply); - bool putCategory(const QString &_url, const int &_order, int& _nCategory); - bool uploadData(QSqlDatabase &_db, const int& _nCompany, QStringList& _order); - bool changeTable(QSqlDatabase &_db, const int& _nCompany); - int getReplyNum(const QString &_url, const int& _order); - stReply* get(const QString& _url, const int& _order); - QMap* get(const QString& _url); - QString vecToString(const QVector& _realbycategorynum); - void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } - void clear(); - }; - class SId - { - private: - QMap m_mapId; - SInitializer *m_pSInitializer; - public: - bool contains(const QString& _strKey); - void put(const QString& _strKey, const stId& _stid); - void put(const stId& _stid); - QString getIdKey(const QStringList& _strlist); - stId* get(const QString &_strKey); - bool changeTable(QSqlDatabase &_db, const int& _nCompany); - bool uploadData(QSqlDatabase &_db, const int& _nCompany); - void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } - void clear(); - }; - class SNickname - { - private: - QMap m_mapNickname; - SInitializer *m_pSInitializer; - public: - //QString getNicknameKey(const QStringList& _strlist); - stNickname* get(const QString &_strKey); - bool changeTable(QSqlDatabase &_db, const int& _nCompany); - bool uploadData(QSqlDatabase &_db, const int& _nCompany); - void put(const QString& _strKey, const stNickname& _stnickname); - void put(const stNickname& _nickname); - bool contains(const QString& _strKey); - void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } - void clear(); - }; - class SCommunity - { - private: - QMap m_mapCommunity; - SInitializer *m_pSInitializer; - public: - QString getCommunityKey(const QStringList& _strlist); - stCommunity* get(const QString &_strKey); - bool changeTable(QSqlDatabase &_db, const int& _nCompany); - bool uploadData(QSqlDatabase &_db, const int& _nCompany); - void put(const QString& _strKey, const stCommunity& _stcommunity); - bool contains(const QString& _strKey); - void clear(); - void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } - }; - struct stBodyReplyCount - { - int m_nAllBodyCount; - int m_nAllReplyCount; - int m_nFilterBodyCount; - int m_nFilterReplyCount; - stBodyReplyCount():m_nAllBodyCount(0), m_nAllReplyCount(0), m_nFilterBodyCount(0), m_nFilterReplyCount(0){} - }; - struct stDate - { - QString m_strMindate; - QString m_strMaxdate; - QString m_strLastupdate; - stDate():m_strMindate("2100-12-31 23:59:59"), m_strMaxdate("1900-01-01 00:00:00"), m_strLastupdate("1900-01-01 00:00:00"){} - }; + struct stId + { + stId():num(0), id("(none)"), platformname_num(1) {} -private: - SInitializer* m_pSInitializer; - QSet m_setFilteredUrl; + int num; + QString id; + int platformname_num; + }; - QStringList m_slOrderedBodyUrl; - QMap > m_mapReply; - QMap m_mapBody; - QMap m_mapBodyCountOfPlatform; - QMap m_mapUserCountOfPlatform; - QMap m_mapProfile; + struct stNickname + { + stNickname():num(0), platformname_num(0) {} + + int num; + QString nickname; + int id_num; + int platformname_num; + }; + + struct stProfileurlKey + { + stProfileurlKey(int _nPlatform, const QString& _strId):m_nPlatformForm(_nPlatform), m_strId(_strId) {} + + bool operator<(const stProfileurlKey& other) const + { + return (m_nPlatformForm < other.m_nPlatformForm) || ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId < other.m_strId)); + } + bool operator==(const stProfileurlKey &other) const + { + return ((m_nPlatformForm == other.m_nPlatformForm) && (m_strId == other.m_strId)); + } + + int m_nPlatformForm; + QString m_strId; + }; + + class SBody + { + public: + void put(const QString& _url, const stBody& _stbody); + bool putCategory(const QString& _url, const int& _nCategory); + bool uploadData(QSqlDatabase &_db, const int& _nCompany, const QStringList& _order); + bool changeTable(QSqlDatabase &_db, const int& nCompany); + int getBodyNum(const QString& _url); + QString vecToString(const QVector& _realbycategorynum); + QString vecToString(const QSet &_realbycategorynum); + void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } + stBody* get(const QString& _url); + void clear(); + + private: + SInitializer *m_pSInitializer; + QMap m_mapBody; + + }; + + class SReply + { + public: + void put(const QString& _url, const int& _order, const stReply& _streply); + bool putCategory(const QString &_url, const int &_order, int& _nCategory); + bool uploadData(QSqlDatabase &_db, const int& _nCompany, QStringList& _order); + bool changeTable(QSqlDatabase &_db, const int& _nCompany); + int getReplyNum(const QString &_url, const int& _order); + stReply* get(const QString& _url, const int& _order); + QMap* get(const QString& _url); + QString vecToString(const QVector& _realbycategorynum); + void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } + void clear(); + + private: + SInitializer *m_pSInitializer; + QMap > m_mapReply; + + }; + + class SId + { + public: + bool contains(const QString& _strKey); + void put(const QString& _strKey, const stId& _stid); + void put(const stId& _stid); + QString getIdKey(const QStringList& _strlist); + stId* get(const QString &_strKey); + bool changeTable(QSqlDatabase &_db, const int& _nCompany); + bool uploadData(QSqlDatabase &_db, const int& _nCompany); + void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } + void clear(); + + private: + QMap m_mapId; + SInitializer *m_pSInitializer; + + }; + + class SNickname + { + public: + stNickname* get(const QString &_strKey); + bool changeTable(QSqlDatabase &_db, const int& _nCompany); + bool uploadData(QSqlDatabase &_db, const int& _nCompany); + void put(const QString& _strKey, const stNickname& _stnickname); + void put(const stNickname& _nickname); + bool contains(const QString& _strKey); + void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } + void clear(); + + private: + QMap m_mapNickname; + SInitializer *m_pSInitializer; + }; + + class SCommunity + { + public: + QString getCommunityKey(const QStringList& _strlist); + stCommunity* get(const QString &_strKey); + bool changeTable(QSqlDatabase &_db, const int& _nCompany); + bool uploadData(QSqlDatabase &_db, const int& _nCompany); + void put(const QString& _strKey, const stCommunity& _stcommunity); + bool contains(const QString& _strKey); + void clear(); + void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; } + + private: + QMap m_mapCommunity; + SInitializer *m_pSInitializer; + }; + + struct stBodyReplyCount + { + int m_nAllBodyCount; + int m_nAllReplyCount; + int m_nFilterBodyCount; + int m_nFilterReplyCount; + stBodyReplyCount():m_nAllBodyCount(0), m_nAllReplyCount(0), m_nFilterBodyCount(0), m_nFilterReplyCount(0){} + }; + + struct stDate + { + QString m_strMindate; + QString m_strMaxdate; + QString m_strLastupdate; + stDate():m_strMindate("2100-12-31 23:59:59"), m_strMaxdate("1900-01-01 00:00:00"), m_strLastupdate("1900-01-01 00:00:00"){} + }; - SBody m_SBody; - SReply m_SReply; - SCommunity m_SCommunity; - SId m_SId; - SNickname m_SNickname; - stBodyReplyCount m_stBodyReplyCount; - stDate m_stDate; public: - void setInitializer(SInitializer &initializer); - bool loadData(const int& _nDatagroupNumber); - bool uploadData(const int& _nCompany); - bool changeTable(const int& _nCompany); - bool makeTable(); - void addRealUrl(const QString& _strUrl); - void copyData(QVector *_data); - const QMap* getmapBody(); - const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey); - const QMap >* getmapReply(); - const stBody* getstBody(const QString& _strUrl); - const stReply* getstReply(const QString& _strUrl, const int &_order); - const QMap* getstReply(const QString& _strUrl); - int getstBodyNum(const QString& _strUrl); - int getstReplyNum(const QString& _strUrl, const int &_order); - const QStringList* getOrderedUrl(); - void addRealBodyCategory(const QString& _strUrl, const int _nCategory); - void addRealReplyCategory(const QString& _strUrl, const int& _order, int _nCategory); - const stCommunity* getstCommunity(const QStringList& _sl); - const stBodyReplyCount* getCounts(); - const stDate* getstDate(); - int getBodyCount(); - int getUserCount(); - QMap getMapBodyCountOfPlatform(); - QMap getMapUserCountOfPlatform(); + void setInitializer(SInitializer &initializer); + bool loadData(const int& _nDatagroupNumber); + bool uploadData(const int& _nCompany); + bool changeTable(const int& _nCompany); + bool makeTable(); + void addRealUrl(const QString& _strUrl); + void copyData(QVector *_data); + const QMap* getmapBody(); + const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey); + const QMap >* getmapReply(); + const stBody* getstBody(const QString& _strUrl); + const stReply* getstReply(const QString& _strUrl, const int &_order); + const QMap* getstReply(const QString& _strUrl); + int getstBodyNum(const QString& _strUrl); + int getstReplyNum(const QString& _strUrl, const int &_order); + const QStringList* getOrderedUrl(); + void addRealBodyCategory(const QString& _strUrl, const int _nCategory); + void addRealReplyCategory(const QString& _strUrl, const int& _order, int _nCategory); + const stCommunity* getstCommunity(const QStringList& _sl); + const stBodyReplyCount* getCounts(); + const stDate* getstDate(); + int getBodyCount(); + int getUserCount(); + QMap getMapBodyCountOfPlatform(); + QMap getMapUserCountOfPlatform(); private: - void init(); - void setloadQuery(QString _astrQuery[], int _nDatagroupNumber); - void makeProfile(const QStringList& _strList); - void makeBodyCountOfPlatform(); - void makeUserCountOfPlatform(); + SInitializer* m_pSInitializer; + QSet m_setFilteredUrl; + + QStringList m_slOrderedBodyUrl; + QMap > m_mapReply; + QMap m_mapBody; + QMap m_mapBodyCountOfPlatform; + QMap m_mapUserCountOfPlatform; + QMap m_mapProfile; + + SBody m_SBody; + SReply m_SReply; + SCommunity m_SCommunity; + SId m_SId; + SNickname m_SNickname; + stBodyReplyCount m_stBodyReplyCount; + stDate m_stDate; + + void init(); + void setloadQuery(QString _astrQuery[], int _nDatagroupNumber); + void makeProfile(const QStringList& _strList); + void makeBodyCountOfPlatform(); + void makeUserCountOfPlatform(); + }; - #endif // SDATAGROUP - diff --git a/FilterProcess/sdbmanager.h b/FilterProcess/sdbmanager.h index 2a41bdd..080b2fe 100644 --- a/FilterProcess/sdbmanager.h +++ b/FilterProcess/sdbmanager.h @@ -10,28 +10,28 @@ class QSqlError; class SDBManager { public: - enum E_DATABASE{ E_DATABASE_DATA, E_DATABASE_WEB }; - QSqlDatabase getDBConnection(const QString& _dbName) const; - QSqlDatabase getDBConnection(const E_DATABASE& _eDatabase) const; - bool open(const QString& _dbName); - bool open(const E_DATABASE& _eDatabase); - void close(const QString& _dbName); - void close(const E_DATABASE& _eDatabase); - void close(); - void addDatabase(const QString& _dbName, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306); - void addDatabase(const QString& _dbName, const E_DATABASE& _eDatabase, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306); - QSqlQuery sqlQuery(const QString& _dbName); - QSqlQuery sqlQuery(const E_DATABASE& _eDatabase); - bool reOpen(const QString& _dbName); - bool reOpen(const E_DATABASE& _eDatabase); - bool isConnectionError(const QSqlError& _error); - QSqlDatabase operator[](const QString& _dbName) const; - QSqlDatabase operator[](const E_DATABASE& _eDatabase) const; - virtual ~SDBManager(); + enum E_DATABASE{ E_DATABASE_DATA, E_DATABASE_WEB }; + virtual ~SDBManager(); + + QSqlDatabase getDBConnection(const QString& _dbName) const; + QSqlDatabase getDBConnection(const E_DATABASE& _eDatabase) const; + bool open(const QString& _dbName); + bool open(const E_DATABASE& _eDatabase); + void close(const QString& _dbName); + void close(const E_DATABASE& _eDatabase); + void close(); + void addDatabase(const QString& _dbName, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306); + void addDatabase(const QString& _dbName, const E_DATABASE& _eDatabase, const QString& _host, const QString& _id, const QString& _pw, const QString& _db, const int& _port = 3306); + QSqlQuery sqlQuery(const QString& _dbName); + QSqlQuery sqlQuery(const E_DATABASE& _eDatabase); + bool reOpen(const QString& _dbName); + bool reOpen(const E_DATABASE& _eDatabase); + bool isConnectionError(const QSqlError& _error); + QSqlDatabase operator[](const QString& _dbName) const; + QSqlDatabase operator[](const E_DATABASE& _eDatabase) const; + private: - QMap m_mapDBname; + QMap m_mapDBname; }; - #endif // SDBMANAGER - diff --git a/FilterProcess/sfilteralgorithm.h b/FilterProcess/sfilteralgorithm.h index de3a38b..b35bdd9 100644 --- a/FilterProcess/sfilteralgorithm.h +++ b/FilterProcess/sfilteralgorithm.h @@ -1,24 +1,25 @@ #ifndef SFILTERALGORITHM #define SFILTERALGORITHM + #include #include "../common.h" + class QString; class QStringList; class SInitializer; + class SFilterAlgorithm { -private: - QVector m_vecKeyword; public: - void FilterSearch(QVector *m_data, bool *m_bDataFlag, QString _strJson); - void FilterCounter(QVector *m_data, bool *m_bDataFlag, QString _strJson); - void FilterReplace(QVector *m_data, bool *m_bDataFlag, QString _strJson); - void FilterDate(QVector *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn); - void FilterLength(QVector *m_data, bool *m_bDataFlag, QString _strJson); + void FilterSearch(QVector *m_data, bool *m_bDataFlag, QString _strJson); + void FilterCounter(QVector *m_data, bool *m_bDataFlag, QString _strJson); + void FilterReplace(QVector *m_data, bool *m_bDataFlag, QString _strJson); + void FilterDate(QVector *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn); + void FilterLength(QVector *m_data, bool *m_bDataFlag, QString _strJson); + +private: + QVector m_vecKeyword; }; - - #endif // SFILTERALGORITHM - diff --git a/FilterProcess/sfilterprocess.cpp b/FilterProcess/sfilterprocess.cpp index 5f77e86..331f802 100644 --- a/FilterProcess/sfilterprocess.cpp +++ b/FilterProcess/sfilterprocess.cpp @@ -10,141 +10,154 @@ using namespace std; bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName) { - if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName)) - { - cout << "initializer init error" << endl; - return false; - } + if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName)) + { + cout << "initializer init error" << endl; + return false; + } - m_SDatagroup.setInitializer(m_SInitializer); - m_SConsumer.setInitiaizer(m_SInitializer); - m_SInfluencer.setInitiaizer(m_SInitializer); - m_SSpammer.setInitiaizer(m_SInitializer); - m_SPowercafe.setInitiaizer(m_SInitializer); - m_SConsumerMarketer.setInitiaizer(m_SInitializer); - m_SConsumerCheckList.setInitiaizer(m_SInitializer); - m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB); - return true; + m_SDatagroup.setInitializer(m_SInitializer); + m_SConsumer.setInitiaizer(m_SInitializer); + m_SInfluencer.setInitiaizer(m_SInitializer); + m_SSpammer.setInitiaizer(m_SInitializer); + m_SPowercafe.setInitiaizer(m_SInitializer); + m_SConsumerMarketer.setInitiaizer(m_SInitializer); + m_SConsumerCheckList.setInitiaizer(m_SInitializer); + m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB); + return true; } bool SFilterProcess::init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit) { - if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName, _strInfluencerLimit)) - { - cout << "initializer init error" << endl; - return false; - } + if (!m_SInitializer.init(_strFilterProcessGroupID, _strFilterProcessGroupName, _strInfluencerLimit)) + { + cout << "initializer init error" << endl; + return false; + } - m_SDatagroup.setInitializer(m_SInitializer); - m_SConsumer.setInitiaizer(m_SInitializer); - m_SInfluencer.setInitiaizer(m_SInitializer); - m_SSpammer.setInitiaizer(m_SInitializer); - m_SPowercafe.setInitiaizer(m_SInitializer); - m_SConsumerMarketer.setInitiaizer(m_SInitializer); - m_SConsumerCheckList.setInitiaizer(m_SInitializer); - m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB); - return true; + m_SDatagroup.setInitializer(m_SInitializer); + m_SConsumer.setInitiaizer(m_SInitializer); + m_SInfluencer.setInitiaizer(m_SInitializer); + m_SSpammer.setInitiaizer(m_SInitializer); + m_SPowercafe.setInitiaizer(m_SInitializer); + m_SConsumerMarketer.setInitiaizer(m_SInitializer); + m_SConsumerCheckList.setInitiaizer(m_SInitializer); + m_SInitializer.closeConnection(SDBManager::E_DATABASE_WEB); + return true; +} + +void SFilterProcess::LoadData(const SInitializer::stFilterProcess& process) +{ + m_SDatagroup.loadData(process.m_nDatagroupID); +} + +void SFilterProcess::MakeCategory(const SInitializer::stFilterProcess& process) +{ + m_SInitializer.insertDebugLog("FilterGroupName: " + process.m_strFilterGroupName); + switch(process.m_nServiceNum) + { + case E_SERVICE_INFLUENCER: + { + qDebug() << "Influencer:" << process.m_nCategoryNum; + m_SInfluencer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); + break; + } + case E_SERVICE_CONSUMER: + { + qDebug() << "Consumer:" << process.m_nCategoryNum; + m_SConsumer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); + break; + } + case E_SERVICE_SPAMMER: + { + qDebug() << "Spammer:" << process.m_nCategoryNum; + m_SSpammer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); + break; + } + case E_SERVICE_POWERCAFE: + { + qDebug() << "Powercafe:" << process.m_nCategoryNum; + m_SPowercafe.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); + break; + } + } +} + +void SFilterProcess::Send(const SInitializer::stFilterProcess& process) +{ + m_SConsumerMarketer.makeTable(m_SDatagroup); + m_SConsumerCheckList.makeTable(m_SDatagroup); + m_SDatagroup.makeTable(); + + m_SConsumer.makeTable(m_SDatagroup); + m_SInfluencer.makeTable(m_SDatagroup); + m_SSpammer.makeTable(m_SDatagroup); + m_SPowercafe.makeTable(m_SDatagroup); + + if (m_SInitializer.isUpload()) + { + m_SInitializer.openConnection(SDBManager::E_DATABASE_WEB); + m_SDatagroup.uploadData(process.m_nCompanyNum); + m_SConsumer.uploadData(process.m_nCompanyNum); + m_SInfluencer.uploadData(process.m_nCompanyNum); + m_SSpammer.uploadData(process.m_nCompanyNum); + m_SPowercafe.uploadData(process.m_nCompanyNum); + + m_SDatagroup.changeTable(process.m_nCompanyNum); + m_SConsumer.changeTable(process.m_nCompanyNum); + m_SInfluencer.changeTable(process.m_nCompanyNum); + m_SSpammer.changeTable(process.m_nCompanyNum); + m_SPowercafe.changeTable(process.m_nCompanyNum); + + m_SInitializer.updateWebDBInfoComplete(m_SInitializer.getDatabase(SDBManager::E_DATABASE_WEB), m_SDatagroup.getstDate()->m_strMindate, + m_SDatagroup.getstDate()->m_strMaxdate, m_SDatagroup.getstDate()->m_strLastupdate, + m_SDatagroup.getCounts()->m_nFilterBodyCount, m_SDatagroup.getCounts()->m_nFilterReplyCount, + process.m_nCompanyNum); + m_SInitializer.insertLog("Upload Done"); + m_nCompany = process.m_nCompanyNum; + } + else + { + m_nCompany = -100; + m_SInitializer.insertLog("No Upload"); + } + + m_SConsumer.SaveDataFile(process.m_nCompanyNum); + m_SInfluencer.SaveDataFile(process.m_nCompanyNum); } bool SFilterProcess::run() { - m_SInitializer.insertLog("New Filter start"); - QList listFilterProcess = m_SInitializer.getFilterProcess(); - foreach (SInitializer::stFilterProcess process, listFilterProcess) - { - switch(process.m_nFilterProcessType) - { - case E_PROCSS_TYPE_LOAD: - { - m_SDatagroup.loadData(process.m_nDatagroupID); - break; - } - case E_PROCSS_TYPE_CATEGORY_MAKE: - { - m_SInitializer.insertDebugLog("FilterGroupName: " + process.m_strFilterGroupName); - switch(process.m_nServiceNum) - { - case E_SERVICE_INFLUENCER: - { - qDebug() << "Influencer:" << process.m_nCategoryNum; - m_SInfluencer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); - break; - } - case E_SERVICE_CONSUMER: - { - qDebug() << "Consumer:" << process.m_nCategoryNum; - m_SConsumer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); - break; - } - case E_SERVICE_SPAMMER: - { - qDebug() << "Spammer:" << process.m_nCategoryNum; - m_SSpammer.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); - break; - } - case E_SERVICE_POWERCAFE: - { - qDebug() << "Powercafe:" << process.m_nCategoryNum; - m_SPowercafe.makeCategory(m_SDatagroup, process.m_nCategoryNum, m_SInitializer.getFilterGroup(process.m_nFilterGroupID)); - break; - } - } + m_SInitializer.insertLog("New Filter start"); + QList listFilterProcess = m_SInitializer.getFilterProcess(); + foreach (SInitializer::stFilterProcess process, listFilterProcess) + { + switch(process.m_nFilterProcessType) + { + case E_PROCSS_TYPE_LOAD: + { + LoadData(process); + break; + } + case E_PROCSS_TYPE_CATEGORY_MAKE: + { + MakeCategory(process); + break; + } + case E_PROCSS_TYPE_SEND: + { + Send(process); + break; + } + } + } - break; - } - case E_PROCSS_TYPE_SEND: - { - m_SConsumerMarketer.makeTable(m_SDatagroup); - m_SConsumerCheckList.makeTable(m_SDatagroup); - m_SDatagroup.makeTable(); - - m_SConsumer.makeTable(m_SDatagroup); - m_SInfluencer.makeTable(m_SDatagroup); - m_SSpammer.makeTable(m_SDatagroup); - m_SPowercafe.makeTable(m_SDatagroup); - - if (m_SInitializer.isUpload()) - { - m_SInitializer.openConnection(SDBManager::E_DATABASE_WEB); - m_SDatagroup.uploadData(process.m_nCompanyNum); - m_SConsumer.uploadData(process.m_nCompanyNum); - m_SInfluencer.uploadData(process.m_nCompanyNum); - m_SSpammer.uploadData(process.m_nCompanyNum); - m_SPowercafe.uploadData(process.m_nCompanyNum); - - m_SDatagroup.changeTable(process.m_nCompanyNum); - m_SConsumer.changeTable(process.m_nCompanyNum); - m_SInfluencer.changeTable(process.m_nCompanyNum); - m_SSpammer.changeTable(process.m_nCompanyNum); - m_SPowercafe.changeTable(process.m_nCompanyNum); - - m_SInitializer.updateWebDBInfoComplete(m_SInitializer.getDatabase(SDBManager::E_DATABASE_WEB), m_SDatagroup.getstDate()->m_strMindate, - m_SDatagroup.getstDate()->m_strMaxdate, m_SDatagroup.getstDate()->m_strLastupdate, - m_SDatagroup.getCounts()->m_nFilterBodyCount, m_SDatagroup.getCounts()->m_nFilterReplyCount, - process.m_nCompanyNum); - m_SInitializer.insertLog("Upload Done"); - m_nCompany = process.m_nCompanyNum; - } - else - { - m_nCompany = -100; - m_SInitializer.insertLog("No Upload"); - } - - m_SConsumer.SaveDataFile(process.m_nCompanyNum); - m_SInfluencer.SaveDataFile(process.m_nCompanyNum); - - break; - } - } - } - - m_SInitializer.insertLog("New Filter END."); - return true; + m_SInitializer.insertLog("New Filter END."); + return true; } int SFilterProcess::getCompanyNum() { - return m_nCompany; + return m_nCompany; } diff --git a/FilterProcess/sfilterprocess.h b/FilterProcess/sfilterprocess.h index 71da382..b60701b 100644 --- a/FilterProcess/sfilterprocess.h +++ b/FilterProcess/sfilterprocess.h @@ -1,5 +1,6 @@ #ifndef SFILTERPROCESS #define SFILTERPROCESS + #include "sinitializer.h" #include "sdatagroup.h" #include "sconsumer.h" @@ -11,31 +12,37 @@ class QString; class SFilterProcess:public QObject { - Q_OBJECT -private: - SInitializer m_SInitializer; - SDatagroup m_SDatagroup; - SConsumer m_SConsumer; - SInfluencer m_SInfluencer; - SSpammer m_SSpammer; - SPowercafe m_SPowercafe; - SConsumerMarketer m_SConsumerMarketer; - SConsumerCheckList m_SConsumerCheckList; - int m_nCompany; + Q_OBJECT + public: - enum E_SERVICE - { - E_SERVICE_INFLUENCER = 1, - E_SERVICE_CONSUMER, - E_SERVICE_SPAMMER, - E_SERVICE_POWERCAFE - }; - SFilterProcess(QObject *parent = 0):QObject(parent), m_nCompany(-1){} - bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName); - bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit); - bool run(); - int getCompanyNum(); + enum E_SERVICE + { + E_SERVICE_INFLUENCER = 1, + E_SERVICE_CONSUMER, + E_SERVICE_SPAMMER, + E_SERVICE_POWERCAFE + }; + SFilterProcess(QObject *parent = 0):QObject(parent), m_nCompany(-1){} + bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName); + bool init(QString _strFilterProcessGroupID, QString _strFilterProcessGroupName, QString _strInfluencerLimit); + bool run(); + int getCompanyNum(); + +private: + SInitializer m_SInitializer; + SDatagroup m_SDatagroup; + SConsumer m_SConsumer; + SInfluencer m_SInfluencer; + SSpammer m_SSpammer; + SPowercafe m_SPowercafe; + SConsumerMarketer m_SConsumerMarketer; + SConsumerCheckList m_SConsumerCheckList; + int m_nCompany; + + void LoadData(const SInitializer::stFilterProcess& process); + void MakeCategory(const SInitializer::stFilterProcess& process); + void Send(const SInitializer::stFilterProcess& process); + }; #endif // SFILTERPROCESS - diff --git a/FilterProcess/shttpsender.cpp b/FilterProcess/shttpsender.cpp index 7852244..ff714e9 100644 --- a/FilterProcess/shttpsender.cpp +++ b/FilterProcess/shttpsender.cpp @@ -127,7 +127,7 @@ void SHttpSender::ReadData() */ } -void SHttpSender::error(QAbstractSocket::SocketError error) +void SHttpSender::error(QAbstractSocket::SocketError /*error*/) { exit(0); } diff --git a/FilterProcess/shttpsender.h b/FilterProcess/shttpsender.h index 97fa9c2..2c4ddff 100644 --- a/FilterProcess/shttpsender.h +++ b/FilterProcess/shttpsender.h @@ -1,26 +1,29 @@ #ifndef SHTTPSENDER_H #define SHTTPSENDER_H + #include #include #include #include + class SHttpSender : public QObject { - Q_OBJECT + Q_OBJECT public: - SHttpSender(QObject * obj = 0); - void SendData(int _company_num); - virtual ~SHttpSender(); + SHttpSender(QObject * obj = 0); + void SendData(int _company_num); + virtual ~SHttpSender(); + private slots: - void ReadData(); - void DisConnected(); - void error(QAbstractSocket::SocketError error); + void ReadData(); + void DisConnected(); + void error(QAbstractSocket::SocketError error); private: - QTcpSocket *socket; - quint16 port; - QString addr; - QString addrName; + QTcpSocket *socket; + quint16 port; + QString addr; + QString addrName; }; #endif // SHTTPSENDER_H diff --git a/FilterProcess/sinfluencer.h b/FilterProcess/sinfluencer.h index 48e708f..750ecfa 100644 --- a/FilterProcess/sinfluencer.h +++ b/FilterProcess/sinfluencer.h @@ -1,5 +1,6 @@ #ifndef SINFLUENCER #define SINFLUENCER + #include "sservice.h" #include "sfilteralgorithm.h" #include "sinitializer.h" @@ -9,362 +10,375 @@ class QString; class QStringList; + class SInfluencer:public SService { public: - struct stReal - { - QSet m_setRealAllUrl; - QSet m_setRealBodyUrl; - QMap m_mapRealReplyUniqueUrl; //multiple - }; - struct stInfluencer - { - int id_num; - int nickname_num; - int community_num; - int category_num; - QString id_id; - QString profile; - QString profileurl; - int bodycount; - int replycount; - double influencervalue; - int rank; - QString community_title; - QString community_url; - QString community_id; - QString nickname_nickname; - QString nickname_exnickname; - QString platformname_name; - int platformname_num; - int sharecount; - int likecount; - QString interactionrank; -QString isSelected; - QMap > interactions; - int interactionsTotalReplyCount; - int interactionsTotalCount; + struct stReal + { + QSet m_setRealAllUrl; + QSet m_setRealBodyUrl; + QMap m_mapRealReplyUniqueUrl; //multiple + }; - stInfluencer():id_num(0),nickname_num(0),community_num(0),category_num(0),bodycount(0),replycount(0),rank(0),influencervalue(0.0),platformname_num(0), - sharecount(0), likecount(0), interactionsTotalReplyCount(0), interactionsTotalCount(0), isSelected("NULL") {} + struct stInfluencer + { + stInfluencer():id_num(0),nickname_num(0),community_num(0),category_num(0),bodycount(0),replycount(0),rank(0),influencervalue(0.0),platformname_num(0), + sharecount(0), likecount(0), interactionsTotalReplyCount(0), interactionsTotalCount(0), isSelected("NULL") {} - }; - struct stStatsInfBloggerRank - { - QString id_id; - QString nickname_nickname; - int bodycount; - int replycount; - double influencevalue; - QString subject; - int company_num; - int rank; - stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){} - stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname), - bodycount(0), replycount(0), rank(0), influencevalue(0.0) {} - }; + int id_num; + int nickname_num; + int community_num; + int category_num; + QString id_id; + QString profile; + QString profileurl; + int bodycount; + int replycount; + double influencervalue; + int rank; + QString community_title; + QString community_url; + QString community_id; + QString nickname_nickname; + QString nickname_exnickname; + QString platformname_name; + int platformname_num; + int sharecount; + int likecount; + QString interactionrank; + QString isSelected; + QMap > interactions; + int interactionsTotalReplyCount; + int interactionsTotalCount; - struct stStatsInfBloggerBuzzbyday - { - QString date; - int formateddate; - int idcount; - int bodycount; - int replycount; - int company_num; - stStatsInfBloggerBuzzbyday():formateddate(0), idcount(0), bodycount(0), replycount(0), company_num(0){} - }; + }; - struct stBodyInfluencerMap - { - int num; - int body_num; - int id_num; - int category_num; - int realin; - int community_num; - QString date; - stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){} - }; - struct stReplyInfluencerMap - { - int num; - int reply_num; - int body_num; - int id_num; - int category_num; - int realin; - int community_num; - QString body_date; - stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){} - }; + struct stStatsInfBloggerRank + { + stStatsInfBloggerRank():bodycount(0),replycount(0),rank(0),influencevalue(0.0){} + stStatsInfBloggerRank(const QString &_id_id, const QString &_nickname_nickname):id_id(_id_id),nickname_nickname(_nickname_nickname), + bodycount(0), replycount(0), rank(0), influencevalue(0.0) {} - class SReplyInfluencerMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + QString id_id; + QString nickname_nickname; + int bodycount; + int replycount; + double influencevalue; + QString subject; + int company_num; + int rank; - class STInfluencer - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - QMap > m_mapInfluencerOfCategory; - QMap > m_mapInfluencerGroupInfo; - QMap > > m_mapInfluencerOfGroup; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - bool SaveDataFile(int _companyNum); - void clear(){ m_listMap.clear(); } - QList& getInfluencerList(); - int getInfluencerCount(); - QMap getInfluencerCountOfPlatform(); -int getInfluencerGroupNum(int _nCategoryNum); -void setInfluencerValueWeight(); -void processDuplicatedInfluencer(); -QMap > makeInfluencerValuesOfId(QMap > &_mapInfluencersOfCategory); -QMap > filterInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); -void sortInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); -void copyInfluencerFromGroupToList(); -void sortInfluencerByValue(); -void setInfluecnerRank(); -void setDuplicatedInfluencerFlag(QMap > &_mapInfluencersOfCategory, QMap > &_mapInfluencerValuesOfId); -void setGroupDuplicatedInfluencerFlag(QMap &_mapCountOfGroupDuplicatedId); -QMap makeCountOfGroupDuplicatedId(); - }; + }; - class SStatsInfBloggerRank - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - }; + struct stStatsInfBloggerBuzzbyday + { + stStatsInfBloggerBuzzbyday():formateddate(0), idcount(0), bodycount(0), replycount(0), company_num(0){} - class SStatsInfBloggerBuzzbyday - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - }; + QString date; + int formateddate; + int idcount; + int bodycount; + int replycount; + int company_num; - class SBodyInfluencerMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + }; - class SInfluencerWeight - { - private: - QMap m_mapBodyWeight; - QMap m_mapReplyWeight; - QMap m_mapLikeWeight; - const static double m_multipleValue; + struct stBodyInfluencerMap + { + stBodyInfluencerMap():num(0),body_num(0), id_num(0), category_num(0), realin(0), community_num(0){} - private: - void calculateSectionWeight(QMap& _mapSection); - public: - void calculateWeight(); - void insert(stInfluencer &_val); - double getInfluenceValue(stInfluencer &_val); - }; + int num; + int body_num; + int id_num; + int category_num; + int realin; + int community_num; + QString date; - struct stStatsJson - { - int company_num; - int servicenum; - QString title; - QString subtitle; - QString platformname_name; - int platformname_num; - QString jdata; - int category_num; - int bodyCountOfPlatform; - int userCount; - int influencerGroupNum; - stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0), bodyCountOfPlatform(0), userCount(0), influencerGroupNum(0){} - }; + }; + struct stReplyInfluencerMap + { + stReplyInfluencerMap():num(0),reply_num(0),body_num(0),id_num(0),category_num(0),realin(0),community_num(0){} - class SPlatformStatistics - { - private: - QMap m_mapBodyCountOfPlatform; - QMap m_mapUserCountOfPlatform; - int m_nTotalBodyCount; - int m_nTotalUserCount; - public: - SPlatformStatistics() : m_nTotalBodyCount(0), m_nTotalUserCount(0) {} - void calculatePlatformsStatistics(SDatagroup &_datagroup); - int getBodyCount(QString _platformname); - int getUserCount(QString _platformname); - int getTotalBodyCount(); - int getTotalUserCount(); - }; + int num; + int reply_num; + int body_num; + int id_num; + int category_num; + int realin; + int community_num; + QString body_date; - class SGroupStatistics - { - private: - QMap m_mapUserCountOfGroup; - QMap m_mapPlatformOfGroup; - const QMap > m_mapCategorysOfGroup; - const QList& m_listInfluencer; + }; - private: - void calculateUserCount(); - void calculatePlatform(); - QString getMaxBodyCountPlatform(QMap _mapBodyCountOfPlatform); - public: - SGroupStatistics(QMap > _mapCategorysOfGroup, QList& _listInfluencer) : - m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {} - void calculateGroupStatistics(); - QString getPlatform(int _nGroupNum); - }; + class SReplyInfluencerMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); - class SStatsJson - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + private: + SInitializer *m_pSInitializer; + QList m_listMap; - private: - void makeGroupStatsJson(SGroupStatistics _groupStatistics, SPlatformStatistics _platformStatistics); - void makeTotalStatsJson(SPlatformStatistics _platformStatistics); - QString makeStatsJson(stStatsJson _ststatsJson); + }; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } -// void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - void makeTable(SDatagroup &_datagroup, STInfluencer& _influencer); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear(){ m_listMap.clear(); } - }; + class STInfluencer + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + bool SaveDataFile(int _companyNum); + void clear(){ m_listMap.clear(); } + QList& getInfluencerList(); + int getInfluencerCount(); + QMap getInfluencerCountOfPlatform(); + int getInfluencerGroupNum(int _nCategoryNum); + void setInfluencerValueWeight(); + void processDuplicatedInfluencer(); + QMap > makeInfluencerValuesOfId(QMap > &_mapInfluencersOfCategory); + QMap > filterInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); + void sortInfluencerValuesOfId(QMap > &_mapInfluencerValuesOfId); + void copyInfluencerFromGroupToList(); + void sortInfluencerByValue(); + void setInfluecnerRank(); + void setDuplicatedInfluencerFlag(QMap > &_mapInfluencersOfCategory, QMap > &_mapInfluencerValuesOfId); + void setGroupDuplicatedInfluencerFlag(QMap &_mapCountOfGroupDuplicatedId); + QMap makeCountOfGroupDuplicatedId(); - class SIdrankbyinteraction - { - private: - QJsonArray m_interactorsJson; - QJsonArray m_pickedInteractorsJson; + private: + SInitializer *m_pSInitializer; + QList m_listMap; + QMap > m_mapInfluencerOfCategory; + QMap > m_mapInfluencerGroupInfo; + QMap > > m_mapInfluencerOfGroup; - private: - void makeInteractorsJson(const SInfluencer::stInfluencer& _val); - void pickInteractorsByHighReplyCount(int _pickLimit); - public: - QString makeIdrankbyinteractionColumnJson(const SInfluencer::stInfluencer& _val); - }; + }; - struct isGreaterInfluencerValue - { - bool operator()(const stInfluencer& first, const stInfluencer& second) - { - if (first.influencervalue > second.influencervalue) - return true; - else if (first.influencervalue == second.influencervalue) - return first.bodycount > second.bodycount; - else - return false; - //return first.influencervalue > second.influencervalue; - } - bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) - { - if (first.influencevalue > second.influencevalue) - return true; - else if (first.influencevalue == second.influencevalue) - return first.bodycount > second.bodycount; - else - return false; - //return first.influencevalue > second.influencevalue; - } - }; + class SStatsInfBloggerRank + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); - struct isGreaterInfluencerRank - { - bool operator()(const stInfluencer& first, const stInfluencer& second) - { - return first.rank <= second.rank; - } - }; + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + class SStatsInfBloggerBuzzbyday + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + class SBodyInfluencerMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + class SInfluencerWeight + { + public: + void calculateWeight(); + void insert(stInfluencer &_val); + double getInfluenceValue(stInfluencer &_val); + + private: + QMap m_mapBodyWeight; + QMap m_mapReplyWeight; + QMap m_mapLikeWeight; + const static double m_multipleValue; + + void calculateSectionWeight(QMap& _mapSection); + + }; + + struct stStatsJson + { + stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0), bodyCountOfPlatform(0), userCount(0), influencerGroupNum(0){} + + int company_num; + int servicenum; + QString title; + QString subtitle; + QString platformname_name; + int platformname_num; + QString jdata; + int category_num; + int bodyCountOfPlatform; + int userCount; + int influencerGroupNum; + + }; + + class SPlatformStatistics + { + public: + SPlatformStatistics() : m_nTotalBodyCount(0), m_nTotalUserCount(0) {} + void calculatePlatformsStatistics(SDatagroup &_datagroup); + int getBodyCount(QString _platformname); + int getUserCount(QString _platformname); + int getTotalBodyCount(); + int getTotalUserCount(); + + private: + QMap m_mapBodyCountOfPlatform; + QMap m_mapUserCountOfPlatform; + int m_nTotalBodyCount; + int m_nTotalUserCount; + + }; + + class SGroupStatistics + { + public: + SGroupStatistics(QMap > _mapCategorysOfGroup, QList& _listInfluencer) : + m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {} + void calculateGroupStatistics(); + QString getPlatform(int _nGroupNum); + + private: + QMap m_mapUserCountOfGroup; + QMap m_mapPlatformOfGroup; + const QMap > m_mapCategorysOfGroup; + const QList& m_listInfluencer; + + void calculateUserCount(); + void calculatePlatform(); + QString getMaxBodyCountPlatform(QMap _mapBodyCountOfPlatform); + + }; + + class SStatsJson + { + public: + void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } + void makeTable(SDatagroup &_datagroup, STInfluencer& _influencer); + bool uploadData(QSqlDatabase& _db, const int &_nCompany); + void clear(){ m_listMap.clear(); } + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + void makeGroupStatsJson(SGroupStatistics _groupStatistics, SPlatformStatistics _platformStatistics); + void makeTotalStatsJson(SPlatformStatistics _platformStatistics); + QString makeStatsJson(stStatsJson _ststatsJson); + + }; + + class SIdrankbyinteraction + { + public: + QString makeIdrankbyinteractionColumnJson(const SInfluencer::stInfluencer& _val); + + private: + QJsonArray m_interactorsJson; + QJsonArray m_pickedInteractorsJson; + + void makeInteractorsJson(const SInfluencer::stInfluencer& _val); + void pickInteractorsByHighReplyCount(int _pickLimit); + + }; + + struct isGreaterInfluencerValue + { + bool operator()(const stInfluencer& first, const stInfluencer& second) + { + return (first.influencervalue > second.influencervalue) || ((first.influencervalue == second.influencervalue) && (first.bodycount > second.bodycount)); + } + bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) + { + return (first.influencevalue > second.influencevalue) || ((first.influencevalue == second.influencevalue) || (first.bodycount > second.bodycount)); + } + }; + + struct isGreaterInfluencerRank + { + bool operator()(const stInfluencer& first, const stInfluencer& second) + { + return first.rank <= second.rank; + } + }; - struct isGreaterBodyCount - { - bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) - { - return first.bodycount > second.bodycount; - } - bool operator()(const stInfluencer& first, const stInfluencer& second) - { - return first.bodycount > second.bodycount; - } - }; + struct isGreaterBodyCount + { + bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) + { + return first.bodycount > second.bodycount; + } + bool operator()(const stInfluencer& first, const stInfluencer& second) + { + return first.bodycount > second.bodycount; + } + }; - struct isGreaterReplyCount - { - bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) - { - return first.replycount > second.replycount; - } - bool operator()(const stInfluencer& first, const stInfluencer& second) - { - return first.replycount > second.replycount; - } - }; + struct isGreaterReplyCount + { + bool operator()(const stStatsInfBloggerRank& first, const stStatsInfBloggerRank& second) + { + return first.replycount > second.replycount; + } + bool operator()(const stInfluencer& first, const stInfluencer& second) + { + return first.replycount > second.replycount; + } + }; - struct stInfluenceBuzz - { - int bodycount; - int replycount; - QSet idcount; - stInfluenceBuzz():bodycount(0), replycount(0) {} - }; + struct stInfluenceBuzz + { + stInfluenceBuzz():bodycount(0), replycount(0) {} - -private: - SFilterAlgorithm m_SFilterAlgorithm; - QMap m_mapCategory; - SBodyInfluencerMap m_SBodyInfluencerMap; - SReplyInfluencerMap m_SReplyInfluencerMap; - //SStatsInfBloggerBuzzbyday m_SStatsInfBloggerBuzzbyday; - //SStatsInfBloggerRank m_SStatsInfBloggerRank; - STInfluencer m_STInfluencer; - SStatsJson m_SStatsJson; + int bodycount; + int replycount; + QSet idcount; + }; public: - virtual void setInitiaizer(SInitializer &_initializer); - virtual bool uploadData(int _companyNum); - virtual bool changeTable(int _companyNum); - virtual bool SaveDataFile(int _companyNum); - virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); - virtual bool makeOverallCategory(int _categoryNum); - virtual bool makeTable(SDatagroup &_datagroup); + virtual void setInitiaizer(SInitializer &_initializer); + virtual bool uploadData(int _companyNum); + virtual bool changeTable(int _companyNum); + virtual bool SaveDataFile(int _companyNum); + virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); + virtual bool makeOverallCategory(int _categoryNum); + virtual bool makeTable(SDatagroup &_datagroup); + +private: + SFilterAlgorithm m_SFilterAlgorithm; + QMap m_mapCategory; + SBodyInfluencerMap m_SBodyInfluencerMap; + SReplyInfluencerMap m_SReplyInfluencerMap; + STInfluencer m_STInfluencer; + SStatsJson m_SStatsJson; }; diff --git a/FilterProcess/sinfluencerinteractorurlmaker.h b/FilterProcess/sinfluencerinteractorurlmaker.h index 6da5eea..5388630 100644 --- a/FilterProcess/sinfluencerinteractorurlmaker.h +++ b/FilterProcess/sinfluencerinteractorurlmaker.h @@ -6,21 +6,15 @@ class SInfluencerInteractorUrlMaker { -private: - static const QString m_strNaverBlogBaseUrl; - static const QString m_strInstagramBaseUrl; - static const QString m_strKakaoBaseUrl; - static const QString m_strFacebookBaseUrl; - public: - static QString makeInfluencerInteractorUrl(const SDatagroup::stReply& _interactorReply); + static QString makeInfluencerInteractorUrl(const SDatagroup::stReply& _interactorReply); + +private: + static const QString m_strNaverBlogBaseUrl; + static const QString m_strInstagramBaseUrl; + static const QString m_strKakaoBaseUrl; + static const QString m_strFacebookBaseUrl; + }; - - - - - - - #endif // SINFLUENCERINTERACTORURLMAKER_H diff --git a/FilterProcess/sinitializer.cpp b/FilterProcess/sinitializer.cpp index ea40502..c297602 100644 --- a/FilterProcess/sinitializer.cpp +++ b/FilterProcess/sinitializer.cpp @@ -376,6 +376,8 @@ bool SInitializer::initFilterProcess() QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order,service_num,filtergroup_name " "from filterprocess where filterprocessgroup_id = ") + QString::number(m_stFilterProcessGroup.m_nFilterProcessGroupID); + qDebug() << strQuery << endl; + QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]); if(query.exec(strQuery.toUtf8()) == false) @@ -766,10 +768,11 @@ bool SInitializer::initCompanyNum() void SInitializer::insertLog(const QString& _strMsg) const { - cout << "["; - cout << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString(); - cout << "] "; - cout << _strMsg.toStdString() << endl; + cout << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString() << "] " << _strMsg.toStdString() << endl; + +#ifdef QT_DEBUG + //qDebug() << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName << "]" << _strMsg; +#endif QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "." + QDate::currentDate().toString(Qt::ISODate)+".log"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) @@ -787,10 +790,10 @@ void SInitializer::insertDebugLog(const QString& _strMsg) const if (!m_bDebug) return; - cout << "["; - cout << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString(); - cout << "] "; - cout << _strMsg.toStdString() << endl; + cout << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString() << "] " << _strMsg.toStdString() << endl; +#ifdef QT_DEBUG + //qDebug() << "[" << m_stFilterProcessGroup.m_strFilterProcessGroupName << "] " << _strMsg << endl; +#endif QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "_debug." + QDate::currentDate().toString(Qt::ISODate)+".log"); if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) diff --git a/FilterProcess/sinitializer.h b/FilterProcess/sinitializer.h index ee5b1dc..76a7eb3 100644 --- a/FilterProcess/sinitializer.h +++ b/FilterProcess/sinitializer.h @@ -1,5 +1,6 @@ #ifndef SINITIALIZER #define SINITIALIZER + #include "sdbmanager.h" #include #include @@ -10,248 +11,232 @@ class QSqlDatabase; const int REAL_BODY = 0x01; const int REAL_REPLY = 0x02; -//const int DEBUG = 0; -//const int RELEASE = 1; -//const int MODE = RELEASE; class SInitializer { +public: + enum E_SPAMER + { + E_SPAMER_BODY_COUNT_CUT = 0, + E_SPAMER_BODY_COUNT_RATIO, + E_SPAMER_REPLY_COUNT_CUT, + E_SPAMER_REPLY_COUNT_RATIO, + E_SPAMER_NICK_COUNT_CUT, + E_SPAMER_NICK_COUNT_RATIO, + E_SPAMER_MAX + }; -private: - bool initDays(); - bool initDBConnection(); - bool initFilterProcess(); - bool initCompanyNum(); - bool initColumn(); - bool initInfluencer(); - bool initSpammer(); - bool initPlatform(); - //bool initConsumerCategory(); - bool initCategory(); - bool initBlogPageNum(); - bool initConsumerMarketer(); - bool initConsumerCheckList(); - bool initUpload(); - bool initDebug(); + enum E_COLUMN + { + E_COLUMN_DATABASE=0, + E_COLUMN_NAME, + E_COLUMN_DATE, + E_COLUMN_COUNT, + }; + enum E_ARTICLE + { + E_ARTICLE_BODY = 0, + E_ARTICLE_REPLY, + E_ARTICLE_MAX, + }; + enum E_DATA + { + E_DATA_platform_title = 0, + E_DATA_article_form, + E_DATA_article_parent, + E_DATA_article_id, + E_DATA_article_nickname, + E_DATA_article_title, + E_DATA_article_data, + E_DATA_article_url, + E_DATA_article_hit, + E_DATA_article_date, + E_DATA_article_order, + E_DATA_platform_id, + E_DATA_platform_name, + E_DATA_platform_form, + E_DATA_reply_url, + E_DATA_keyword_id, + E_DATA_article_profileurl, + E_DATA_article_profile, + E_DATA_etc, + E_DATA_MAX, + // for body, not reply + E_DATA_article_like = E_DATA_reply_url, + E_DATA_article_share = E_DATA_article_parent, + E_DATA_article_replycount = E_DATA_article_order + }; + enum E_SERVICE + { + E_SERVICE_INFLUENCER = 1, + E_SERVICE_CONSUMER, + E_SERVICE_SPAMMER, + E_SERVICE_POWERCAFE, + E_SERVICE_MAX + }; + + struct stDataBaseInfo + { + QString m_strHostName; + QString m_strUserName; + QString m_strPassword; + QString m_strDBName; + }; + + struct stFilterProcessGroup + { + int m_nFilterProcessGroupID; + QString m_strFilterProcessGroupName; + }; + + struct stInfluencerParam + { + double m_dBody; + double m_dReply; + double A; + double B; + stInfluencerParam() : m_dBody(0.4), m_dReply(0.6), A(1.0), B(1.0) {} + double operator[](const int nSelect) const + { + switch(nSelect) + { + case 0: + return m_dBody; + case 1: + return m_dReply; + default: + return 0.0; + } + } + }; + + struct stColumn + { + QStringList m_slColumn; + QStringList m_slColumnName; + int m_anColumn[E_DATA_MAX]; + stColumn() + { + for (int i = 0; i < E_DATA_MAX; i++) + m_anColumn[i] = -1; + } + }; + + struct stFilterProcess + { + int m_nDatagroupID; + int m_nFilterGroupID; + int m_nCategoryNum; + int m_nFilterProcessOrder; + int m_nFilterProcessType; + int m_nCompanyNum; + int m_nServiceNum; + QString m_strFilterGroupName; + }; + + struct stFilter + { + int m_nType; + int m_nFilterGroupID; + QVariant m_vData; + stFilter() + { + m_nType = -1; + m_nFilterGroupID = -1; + } + }; + + struct stPlatform + { + QMap m_mapPlatformName; + QMap m_mapPlatformForm; + }; public: - enum E_SPAMER - { - E_SPAMER_BODY_COUNT_CUT = 0, - E_SPAMER_BODY_COUNT_RATIO, - E_SPAMER_REPLY_COUNT_CUT, - E_SPAMER_REPLY_COUNT_RATIO, - E_SPAMER_NICK_COUNT_CUT, - E_SPAMER_NICK_COUNT_RATIO, - E_SPAMER_MAX - }; - - enum E_COLUMN - { - E_COLUMN_DATABASE=0, - E_COLUMN_NAME, - E_COLUMN_DATE, - E_COLUMN_COUNT, - }; - - enum E_ARTICLE - { - E_ARTICLE_BODY = 0, - E_ARTICLE_REPLY, - E_ARTICLE_MAX, - }; - - enum E_DATA - { - E_DATA_platform_title = 0, - E_DATA_article_form, - E_DATA_article_parent, - E_DATA_article_id, - E_DATA_article_nickname, - E_DATA_article_title, - E_DATA_article_data, - E_DATA_article_url, - E_DATA_article_hit, - E_DATA_article_date, - E_DATA_article_order, - E_DATA_platform_id, - E_DATA_platform_name, - E_DATA_platform_form, - E_DATA_reply_url, - E_DATA_keyword_id, - E_DATA_article_profileurl, - E_DATA_article_profile, - E_DATA_etc, - E_DATA_MAX, - // for body, not reply - E_DATA_article_like = E_DATA_reply_url, - E_DATA_article_share = E_DATA_article_parent, - E_DATA_article_replycount = E_DATA_article_order - }; - enum E_SERVICE - { - E_SERVICE_INFLUENCER = 1, - E_SERVICE_CONSUMER, - E_SERVICE_SPAMMER, - E_SERVICE_POWERCAFE, - E_SERVICE_MAX - }; - - struct stDataBaseInfo - { - QString m_strHostName; - QString m_strUserName; - QString m_strPassword; - QString m_strDBName; - }; - - struct stFilterProcessGroup - { - int m_nFilterProcessGroupID; - QString m_strFilterProcessGroupName; - }; - - struct stInfluencerParam - { - double m_dBody; - double m_dReply; - double A; - double B; - stInfluencerParam() : m_dBody(0.4), m_dReply(0.6), A(1.0), B(1.0) {} - double operator[](const int nSelect) const - { - switch(nSelect) - { - case 0: - return m_dBody; - case 1: - return m_dReply; - default: - return 0.0; - } - } - }; - - struct stColumn - { - QStringList m_slColumn; - QStringList m_slColumnName; - int m_anColumn[E_DATA_MAX]; - stColumn() - { - for (int i = 0; i < E_DATA_MAX; i++) - m_anColumn[i] = -1; - } - }; - - struct stFilterProcess - { - int m_nDatagroupID; - int m_nFilterGroupID; - int m_nCategoryNum; - int m_nFilterProcessOrder; - int m_nFilterProcessType; - int m_nCompanyNum; - int m_nServiceNum; - QString m_strFilterGroupName; - }; - - struct stFilter - { - int m_nType; - int m_nFilterGroupID; - QVariant m_vData; - stFilter() - { - m_nType = -1; - m_nFilterGroupID = -1; - } - }; - - struct stPlatform - { - QMap m_mapPlatformName; - QMap m_mapPlatformForm; - }; - + bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName); + bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName, QString _strInfluencerLimit); + void insertLog(const QString& _strMsg) const; + void insertDebugLog(const QString& _strMsg) const; + QSqlDatabase getDatabase(const QString& _dbName) const; + QSqlDatabase getDatabase(const SDBManager::E_DATABASE& _eDatabase) const; + int getDataGroupNumber() const; + QStringList getColumnStringList() const; + QStringList getColumnNameStringList() const; + QString getStartDay() const; + QString getEndDay() const; + const int* getColumnIntArray() const; + QList getFilterProcess(); + QMap > getFilterGroup(); + const double* getSpammerParam() const; + QList getFilterGroup(int _nFilterGroupId); + int getPlatformForm(const QString &_form); + int getPlatformName(const QString &_name); + QMap* getConsumerCategory(); + //int getConsumerAllCategory(); + void closeConnection(const SDBManager::E_DATABASE _eDatabase); + void closeConnection(const QString& _str); + bool openConnection(const SDBManager::E_DATABASE _eDatabase); + bool openConnection(const QString& _str); + double getInfluencerParam(int _BodyorReply); + stInfluencerParam getInfluencerParam(); + void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus); + void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany); + int getAllCategoryNum(int _nService); + QString getCategoryName(int _nCategory) const; + int getBlogPageNum(); + QMap getConsumerMaketer(); + QStringList getConsumerCheckList(); + QMap getConsumerCheckListUser(); + bool isUpload(); + QMap > getInfluencerGroup(); + QString getInfluencerLimitFrom(); + QString getInfluencerLimitTo(); private: - SDBManager m_sDBManager; - QString m_strStartDay; - QString m_strEndDay; - double m_adSpammerParam[E_SPAMER_MAX]; - stDataBaseInfo m_stWebDBInfo; - int m_nCompanyNum; - stFilterProcessGroup m_stFilterProcessGroup; - stInfluencerParam m_stInfluencerParam; - stColumn m_stColumn; - QList m_listFilterProcess; - QMap > m_mapFilterGroup; // key : filtergroupid - int m_nDataGroupNumber; - stPlatform m_stPlatform; - //QMap m_mapConsumerCategory; - int m_nConsumerAllCategory; - int m_anAllCategory[E_SERVICE_MAX]; - QMap m_mapCategory; - int m_nBlogPageNum; - QMap m_mapConsumerMaketers; - QMap m_mapConsumerCheckListUser; - QMap > m_mapInfluencerGroup; - QStringList m_slConsumerCheckList; - bool m_bUpload; - bool m_bDebug; - QString m_strInfluencerLimitFrom; - QString m_strInfluencerLimitTo; + SDBManager m_sDBManager; + QString m_strStartDay; + QString m_strEndDay; + double m_adSpammerParam[E_SPAMER_MAX]; + stDataBaseInfo m_stWebDBInfo; + int m_nCompanyNum; + stFilterProcessGroup m_stFilterProcessGroup; + stInfluencerParam m_stInfluencerParam; + stColumn m_stColumn; + QList m_listFilterProcess; + QMap > m_mapFilterGroup; // key : filtergroupid + int m_nDataGroupNumber; + stPlatform m_stPlatform; + int m_nConsumerAllCategory; + int m_anAllCategory[E_SERVICE_MAX]; + QMap m_mapCategory; + int m_nBlogPageNum; + QMap m_mapConsumerMaketers; + QMap m_mapConsumerCheckListUser; + QMap > m_mapInfluencerGroup; + QStringList m_slConsumerCheckList; + bool m_bUpload; + bool m_bDebug; + QString m_strInfluencerLimitFrom; + QString m_strInfluencerLimitTo; -public: - bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName); - bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName, QString _strInfluencerLimit); - void insertLog(const QString& _strMsg) const; - void insertDebugLog(const QString& _strMsg) const; - QSqlDatabase getDatabase(const QString& _dbName) const; - QSqlDatabase getDatabase(const SDBManager::E_DATABASE& _eDatabase) const; - int getDataGroupNumber() const; - QStringList getColumnStringList() const; - QStringList getColumnNameStringList() const; + bool initDays(); + bool initDBConnection(); + bool initFilterProcess(); + bool initCompanyNum(); + bool initColumn(); + bool initInfluencer(); + bool initSpammer(); + bool initPlatform(); + bool initCategory(); + bool initBlogPageNum(); + bool initConsumerMarketer(); + bool initConsumerCheckList(); + bool initUpload(); + bool initDebug(); - QString getStartDay() const; - QString getEndDay() const; - const int* getColumnIntArray() const; - QList getFilterProcess(); - QMap > getFilterGroup(); - const double* getSpammerParam() const; - QList getFilterGroup(int _nFilterGroupId); - int getPlatformForm(const QString &_form); - int getPlatformName(const QString &_name); - QMap* getConsumerCategory(); - //int getConsumerAllCategory(); - void closeConnection(const SDBManager::E_DATABASE _eDatabase); - void closeConnection(const QString& _str); - bool openConnection(const SDBManager::E_DATABASE _eDatabase); - bool openConnection(const QString& _str); - double getInfluencerParam(int _BodyorReply); - stInfluencerParam getInfluencerParam(); - void updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus); - void updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany); - int getAllCategoryNum(int _nService); - QString getCategoryName(int _nCategory) const; - int getBlogPageNum(); - QMap getConsumerMaketer(); - QStringList getConsumerCheckList(); - QMap getConsumerCheckListUser(); - bool isUpload(); - QMap > getInfluencerGroup(); - QString getInfluencerLimitFrom(); - QString getInfluencerLimitTo(); - //bool disableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE); - //bool enableIndex(QSqlDatabase& db, QString _tableName, QStringList _strIndexNames, int _nMode = MODE); - //bool disableSettings(QSqlDatabase& db, int _nMode = MODE); - //bool enableSettings(QSqlDatabase& db, int _nMode = MODE); }; - #endif // SINITIALIZER - diff --git a/FilterProcess/spowercafe.cpp b/FilterProcess/spowercafe.cpp index 1020923..c3ae218 100644 --- a/FilterProcess/spowercafe.cpp +++ b/FilterProcess/spowercafe.cpp @@ -14,548 +14,548 @@ QString getCommunityKey(const QStringList& _slRow, const int* anColumn) { - return _slRow[anColumn[SInitializer::E_DATA_platform_id]].trimmed() + - _slRow[anColumn[SInitializer::E_DATA_platform_name]].trimmed() + - _slRow[anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + return _slRow[anColumn[SInitializer::E_DATA_platform_id]].trimmed() + + _slRow[anColumn[SInitializer::E_DATA_platform_name]].trimmed() + + _slRow[anColumn[SInitializer::E_DATA_platform_form]].trimmed(); } void SPowercafe::setInitiaizer(SInitializer &_initializer) { - m_pSInitializer = &_initializer; - m_SBodyPowercafeMap.setInitiaizer(_initializer); - m_SReplyPowercafeMap.setInitiaizer(_initializer); - m_STPowercafe.setInitiaizer(_initializer); - //m_SStatsPowCafeRank.setInitiaizer(_initializer); - m_SStatsJson.setInitiaizer(_initializer); + m_pSInitializer = &_initializer; + m_SBodyPowercafeMap.setInitiaizer(_initializer); + m_SReplyPowercafeMap.setInitiaizer(_initializer); + m_STPowercafe.setInitiaizer(_initializer); + //m_SStatsPowCafeRank.setInitiaizer(_initializer); + m_SStatsJson.setInitiaizer(_initializer); } bool SPowercafe::uploadData(int _companyNum) { - m_pSInitializer->insertLog("Start upload Powercafe"); + m_pSInitializer->insertLog("Start upload Powercafe"); - QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); - m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Powercafe (Start)"); - if (!m_SBodyPowercafeMap.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload Powercafe body map"); - return false; - } - if (!m_SReplyPowercafeMap.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload Powercafe reply map"); - return false; - } - /* - if (!m_SStatsPowCafeRank.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload stats_pow_cafe_rank"); - return false; - } - */ - if (!m_STPowercafe.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload Powercafe"); - return false; - } - if (!m_SStatsJson.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload sstatsJson"); - return false; - } - m_pSInitializer->insertLog("End upload Powercafe"); - m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Powercafe (Finish)"); + QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); + m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Powercafe (Start)"); + if (!m_SBodyPowercafeMap.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload Powercafe body map"); + return false; + } + if (!m_SReplyPowercafeMap.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload Powercafe reply map"); + return false; + } + /* + if (!m_SStatsPowCafeRank.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload stats_pow_cafe_rank"); + return false; + } + */ + if (!m_STPowercafe.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload Powercafe"); + return false; + } + if (!m_SStatsJson.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload sstatsJson"); + return false; + } + m_pSInitializer->insertLog("End upload Powercafe"); + m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Powercafe (Finish)"); - return true; + return true; } bool SPowercafe::changeTable(int _companyNum) { - m_pSInitializer->insertLog("Start table change powercafe"); - QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); - if (!m_SBodyPowercafeMap.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change powercafe body map"); - return false; - } - if (!m_SReplyPowercafeMap.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change powercafe reply map"); - return false; - } - if (!m_STPowercafe.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change powercafe"); - return false; - } + m_pSInitializer->insertLog("Start table change powercafe"); + QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); + if (!m_SBodyPowercafeMap.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change powercafe body map"); + return false; + } + if (!m_SReplyPowercafeMap.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change powercafe reply map"); + return false; + } + if (!m_STPowercafe.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change powercafe"); + return false; + } - return true; + return true; } bool SPowercafe::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter) { - QVector vecData[SInitializer::E_ARTICLE_MAX]; - bool bFiltered[SInitializer::E_ARTICLE_MAX]; + QVector vecData[SInitializer::E_ARTICLE_MAX]; + bool bFiltered[SInitializer::E_ARTICLE_MAX]; - for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) - bFiltered[i] = false; - _datagroup.copyData(vecData); - m_pSInitializer->insertDebugLog(QString("PowerCafe Category: ") + m_pSInitializer->getCategoryName(_nCategory)); - foreach (const SInitializer::stFilter& filter, _listFilter) - { - switch(filter.m_nType) - { - case E_FILTER_TYPE_DATE://Date - m_SFilterAlgorithm.FilterDate(vecData, bFiltered, filter.m_vData.toString(), - m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_article_date]); + for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) + bFiltered[i] = false; + _datagroup.copyData(vecData); + m_pSInitializer->insertDebugLog(QString("PowerCafe Category: ") + m_pSInitializer->getCategoryName(_nCategory)); + foreach (const SInitializer::stFilter& filter, _listFilter) + { + switch(filter.m_nType) + { + case E_FILTER_TYPE_DATE://Date + m_SFilterAlgorithm.FilterDate(vecData, bFiltered, filter.m_vData.toString(), + m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_article_date]); - break; - case E_FILTER_TYPE_SEARCH: - m_SFilterAlgorithm.FilterSearch(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_SEARCH: + m_SFilterAlgorithm.FilterSearch(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_LENGTH: - m_SFilterAlgorithm.FilterLength(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_REPLACE: - m_SFilterAlgorithm.FilterReplace(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_COUNTER: - m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); - break; - } - m_pSInitializer->insertDebugLog("Body: " + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + ", " + - "Reply: " + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ", " + - SService::convertJsonToStr(filter.m_nType, filter.m_vData.toString())); - } - stReal streal; - m_pSInitializer->insertLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + - QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); - m_pSInitializer->insertDebugLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + - QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); - m_pSInitializer->insertDebugLog(""); - const int *anColumn = m_pSInitializer->getColumnIntArray(); - if (bFiltered[SInitializer::E_ARTICLE_BODY]) - { - foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_BODY]) - { - /* - if (strlist[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - streal.m_setRealBodyUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - } - } + break; + case E_FILTER_TYPE_LENGTH: + m_SFilterAlgorithm.FilterLength(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_REPLACE: + m_SFilterAlgorithm.FilterReplace(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_COUNTER: + m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); + break; + } + m_pSInitializer->insertDebugLog("Body: " + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + ", " + + "Reply: " + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ", " + + SService::convertJsonToStr(filter.m_nType, filter.m_vData.toString())); + } + stReal streal; + m_pSInitializer->insertLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); + m_pSInitializer->insertDebugLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); + m_pSInitializer->insertDebugLog(""); + const int *anColumn = m_pSInitializer->getColumnIntArray(); + if (bFiltered[SInitializer::E_ARTICLE_BODY]) + { + foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_BODY]) + { + /* + if (strlist[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + streal.m_setRealBodyUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + } + } - if (bFiltered[SInitializer::E_ARTICLE_REPLY]) - { - foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_REPLY]) - { - /* - if (strlist[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - streal.m_mapRealReplyUniqueUrl.insertMulti(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed(), - strlist[anColumn[SInitializer::E_DATA_article_order]].trimmed().toInt()); - _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - } - } + if (bFiltered[SInitializer::E_ARTICLE_REPLY]) + { + foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_REPLY]) + { + /* + if (strlist[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + streal.m_mapRealReplyUniqueUrl.insertMulti(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed(), + strlist[anColumn[SInitializer::E_DATA_article_order]].trimmed().toInt()); + _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + } + } - m_mapCategory.insert(_nCategory, streal); - return true; + m_mapCategory.insert(_nCategory, streal); + return true; } bool SPowercafe::makeOverallCategory(int _categoryNum) { - if (m_mapCategory.size() < 1) - return true; + if (m_mapCategory.size() < 1) + return true; - stReal streal; - for (QMap::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ ) - { - stReal& val = iterPos.value(); - foreach (const QString& _strurl, val.m_setRealBodyUrl ) - streal.m_setRealBodyUrl.insert(_strurl); - foreach (const QString& _strurl, val.m_setRealAllUrl ) - streal.m_setRealAllUrl.insert(_strurl); + stReal streal; + for (QMap::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ ) + { + stReal& val = iterPos.value(); + foreach (const QString& _strurl, val.m_setRealBodyUrl ) + streal.m_setRealBodyUrl.insert(_strurl); + foreach (const QString& _strurl, val.m_setRealAllUrl ) + streal.m_setRealAllUrl.insert(_strurl); - for (QMap::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end(); - iterPos1++) - { - if (streal.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) && streal.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) - continue; - else - streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); - } - } + for (QMap::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end(); + iterPos1++) + { + if (streal.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) && streal.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) + continue; + else + streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); + } + } - m_mapCategory.insert(_categoryNum, streal); - return true; + m_mapCategory.insert(_categoryNum, streal); + return true; } bool SPowercafe::makeTable(SDatagroup &_datagroup) { - if (m_mapCategory.size() > 0) - { - m_pSInitializer->insertLog("Make powercafe tables"); - m_pSInitializer->insertLog("Make powercafe body tables"); - m_SBodyPowercafeMap.makeTable(_datagroup, m_mapCategory); - m_pSInitializer->insertLog("Make powercafe reply tables"); - m_SReplyPowercafeMap.makeTable(_datagroup, m_mapCategory); - /* - m_pSInitializer->insertLog("Make powercafe stats_pow_cafe_rank tables"); - m_SStatsPowCafeRank.makeTable(_datagroup, m_mapCategory); - */ - m_pSInitializer->insertLog("Make powercafe powercafe table"); - m_STPowercafe.makeTable(_datagroup, m_mapCategory); - m_pSInitializer->insertLog("Make powercafe sstatsjson"); - m_SStatsJson.makeTable(_datagroup, m_mapCategory); - } - return true; + if (m_mapCategory.size() > 0) + { + m_pSInitializer->insertLog("Make powercafe tables"); + m_pSInitializer->insertLog("Make powercafe body tables"); + m_SBodyPowercafeMap.makeTable(_datagroup, m_mapCategory); + m_pSInitializer->insertLog("Make powercafe reply tables"); + m_SReplyPowercafeMap.makeTable(_datagroup, m_mapCategory); + /* + m_pSInitializer->insertLog("Make powercafe stats_pow_cafe_rank tables"); + m_SStatsPowCafeRank.makeTable(_datagroup, m_mapCategory); + */ + m_pSInitializer->insertLog("Make powercafe powercafe table"); + m_STPowercafe.makeTable(_datagroup, m_mapCategory); + m_pSInitializer->insertLog("Make powercafe sstatsjson"); + m_SStatsJson.makeTable(_datagroup, m_mapCategory); + } + return true; } void SPowercafe::STPowercafe::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); - QMap mapPowercafeAll; + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); + QMap mapPowercafeAll; - QMap > mapUserAll; - QMap > mapUserReal; + QMap > mapUserAll; + QMap > mapUserReal; - for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) - { - /* - if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - //QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey(iterPos.value(), anColumn); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stPowercafe()); - mapUserAll.insert(strKey, QSet()); - } - mapPowercafeAll[strKey].bodycountall++; - mapUserAll[strKey].insert(iterPos.value().at(anColumn[SInitializer::E_DATA_article_id]).trimmed()); - } + for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) + { + /* + if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + //QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey(iterPos.value(), anColumn); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stPowercafe()); + mapUserAll.insert(strKey, QSet()); + } + mapPowercafeAll[strKey].bodycountall++; + mapUserAll[strKey].insert(iterPos.value().at(anColumn[SInitializer::E_DATA_article_id]).trimmed()); + } - for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) - { - for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) - { - /* - if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - //QString strKey = iterPos1.value().at(anColumn[SInitializer::E_DATA_platform_id]).trimmed(); - QString strKey = getCommunityKey(iterPos1.value(), anColumn); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stPowercafe()); - mapUserAll.insert(strKey, QSet()); - } - mapPowercafeAll[strKey].replycountall++; - mapUserAll[strKey].insert(iterPos1.value().at(anColumn[SInitializer::E_DATA_article_id]).trimmed()); - } - } + for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) + { + for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) + { + /* + if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + //QString strKey = iterPos1.value().at(anColumn[SInitializer::E_DATA_platform_id]).trimmed(); + QString strKey = getCommunityKey(iterPos1.value(), anColumn); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stPowercafe()); + mapUserAll.insert(strKey, QSet()); + } + mapPowercafeAll[strKey].replycountall++; + mapUserAll[strKey].insert(iterPos1.value().at(anColumn[SInitializer::E_DATA_article_id]).trimmed()); + } + } - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapPowercafeReal; - const stReal& streal = iterPos.value(); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapPowercafeReal; + const stReal& streal = iterPos.value(); - foreach (const QString& url, streal.m_setRealBodyUrl) - { - //QString strKey = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey((*mapBody)[url], anColumn); - if (!mapPowercafeReal.contains(strKey)) - { - mapPowercafeReal.insert(strKey, stPowercafe()); - mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapBody)[url])->id; - mapPowercafeReal[strKey].community_num = _datagroup.getstCommunity((*mapBody)[url])->num; - mapPowercafeReal[strKey].bodycountall = mapPowercafeAll[strKey].bodycountall; - mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; - mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; - mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); - mapPowercafeReal[strKey].category_num = iterPos.key(); - mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapBody)[url])->title; - mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapBody)[url])->url; - mapPowercafeReal[strKey].platformname_name = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_name]].trimmed(); - mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name); + foreach (const QString& url, streal.m_setRealBodyUrl) + { + //QString strKey = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey((*mapBody)[url], anColumn); + if (!mapPowercafeReal.contains(strKey)) + { + mapPowercafeReal.insert(strKey, stPowercafe()); + mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapBody)[url])->id; + mapPowercafeReal[strKey].community_num = _datagroup.getstCommunity((*mapBody)[url])->num; + mapPowercafeReal[strKey].bodycountall = mapPowercafeAll[strKey].bodycountall; + mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; + mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; + mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); + mapPowercafeReal[strKey].category_num = iterPos.key(); + mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapBody)[url])->title; + mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapBody)[url])->url; + mapPowercafeReal[strKey].platformname_name = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_name]].trimmed(); + mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name); - mapUserReal.insert(strKey, QSet()); - } - mapPowercafeReal[strKey].bodycountreal++; - mapUserReal[strKey].insert((*mapBody)[url][anColumn[SInitializer::E_DATA_article_id]].trimmed()); - } + mapUserReal.insert(strKey, QSet()); + } + mapPowercafeReal[strKey].bodycountreal++; + mapUserReal[strKey].insert((*mapBody)[url][anColumn[SInitializer::E_DATA_article_id]].trimmed()); + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.begin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - //QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey((*mapReply)[iterPos1.key()][iterPos1.value()], anColumn); - if (!mapPowercafeReal.contains(strKey)) - { - mapPowercafeReal.insert(strKey, stPowercafe()); - mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->id; - mapPowercafeReal[strKey].community_num = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->num; - mapPowercafeReal[strKey].bodycountall = mapPowercafeAll[strKey].bodycountall; - mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; - mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; - mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); - mapPowercafeReal[strKey].category_num = iterPos.key(); - mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->title; - mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->url; - mapPowercafeReal[strKey].platformname_name = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed(); - mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name); + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.begin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + //QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey((*mapReply)[iterPos1.key()][iterPos1.value()], anColumn); + if (!mapPowercafeReal.contains(strKey)) + { + mapPowercafeReal.insert(strKey, stPowercafe()); + mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->id; + mapPowercafeReal[strKey].community_num = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->num; + mapPowercafeReal[strKey].bodycountall = mapPowercafeAll[strKey].bodycountall; + mapPowercafeReal[strKey].replycountall = mapPowercafeAll[strKey].replycountall; + mapPowercafeReal[strKey].allcountall = mapPowercafeAll[strKey].bodycountall + mapPowercafeAll[strKey].replycountall; + mapPowercafeReal[strKey].usercountall = mapUserAll[strKey].size(); + mapPowercafeReal[strKey].category_num = iterPos.key(); + mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->title; + mapPowercafeReal[strKey].community_url = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->url; + mapPowercafeReal[strKey].platformname_name = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed(); + mapPowercafeReal[strKey].platformname_num = m_pSInitializer->getPlatformName(mapPowercafeReal[strKey].platformname_name); - mapUserReal.insert(strKey, QSet()); - } - mapPowercafeReal[strKey].replycountreal++; - mapUserReal[strKey].insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed()); - } + mapUserReal.insert(strKey, QSet()); + } + mapPowercafeReal[strKey].replycountreal++; + mapUserReal[strKey].insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed()); + } - for (QMap::iterator iterPos1 = mapPowercafeReal.begin(); iterPos1 != mapPowercafeReal.end(); iterPos1++) - { - iterPos1.value().usercountreal = mapUserReal[iterPos1.key()].size(); - iterPos1.value().allcountreal = iterPos1.value().bodycountreal + iterPos1.value().replycountreal; - } - QList listPowercafe = mapPowercafeReal.values(); + for (QMap::iterator iterPos1 = mapPowercafeReal.begin(); iterPos1 != mapPowercafeReal.end(); iterPos1++) + { + iterPos1.value().usercountreal = mapUserReal[iterPos1.key()].size(); + iterPos1.value().allcountreal = iterPos1.value().bodycountreal + iterPos1.value().replycountreal; + } + QList listPowercafe = mapPowercafeReal.values(); - qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountReal()); - int rank = 1; - foreach (stPowercafe stpowercafe, listPowercafe) - { - stpowercafe.rank = rank++; - m_listMap.push_back(stpowercafe); - } - } + qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountReal()); + int rank = 1; + foreach (stPowercafe stpowercafe, listPowercafe) + { + stpowercafe.rank = rank++; + m_listMap.push_back(stpowercafe); + } + } } /* bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "delete from powercafe where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into powercafe (company_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall,bodycountreal,replycountreal,allcountreal,usercountreal)" - " VALUES (:COMPANY_NUM,:RANK,:COMMUNITY_NUM,:COMMUNITY_ID,:BODY_ALL,:REPLY_ALL,:COUNT_ALL,:USER_ALL,:BODY_REAL,:REPLY_REAL,:ALL_REAL,:USER_REAL)"; + QString strQuery = "delete from powercafe where company_num = " + QString::number(_nCompany); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into powercafe (company_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall,bodycountreal,replycountreal,allcountreal,usercountreal)" + " VALUES (:COMPANY_NUM,:RANK,:COMMUNITY_NUM,:COMMUNITY_ID,:BODY_ALL,:REPLY_ALL,:COUNT_ALL,:USER_ALL,:BODY_REAL,:REPLY_REAL,:ALL_REAL,:USER_REAL)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stPowercafe& stpowercafe, m_listMap) - { - query.bindValue(":COMPANY_NUM", _nCompany); - query.bindValue(":COMMUNITY_NUM", stpowercafe.community_num); - query.bindValue(":RANK", stpowercafe.rank); - query.bindValue(":COMMUNITY_ID", stpowercafe.community_id); - query.bindValue(":BODY_ALL", stpowercafe.bodycountall); - query.bindValue(":REPLY_ALL", stpowercafe.replycountall); - query.bindValue(":COUNT_ALL", stpowercafe.allcountall); - query.bindValue(":USER_ALL", stpowercafe.usercountall); - query.bindValue(":BODY_REAL", stpowercafe.bodycountreal); - query.bindValue(":REPLY_REAL", stpowercafe.replycountreal); - query.bindValue(":ALL_REAL", stpowercafe.allcountreal); - query.bindValue(":USER_REAL", stpowercafe.usercountreal); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - strQuery = "update dbinfo set powercafecount = " + QString::number(m_listMap.size()) + " where company_num = " - + QString::number(_nCompany); - query.exec(strQuery); - return true; + foreach (const stPowercafe& stpowercafe, m_listMap) + { + query.bindValue(":COMPANY_NUM", _nCompany); + query.bindValue(":COMMUNITY_NUM", stpowercafe.community_num); + query.bindValue(":RANK", stpowercafe.rank); + query.bindValue(":COMMUNITY_ID", stpowercafe.community_id); + query.bindValue(":BODY_ALL", stpowercafe.bodycountall); + query.bindValue(":REPLY_ALL", stpowercafe.replycountall); + query.bindValue(":COUNT_ALL", stpowercafe.allcountall); + query.bindValue(":USER_ALL", stpowercafe.usercountall); + query.bindValue(":BODY_REAL", stpowercafe.bodycountreal); + query.bindValue(":REPLY_REAL", stpowercafe.replycountreal); + query.bindValue(":ALL_REAL", stpowercafe.allcountreal); + query.bindValue(":USER_REAL", stpowercafe.usercountreal); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + strQuery = "update dbinfo set powercafecount = " + QString::number(m_listMap.size()) + " where company_num = " + + QString::number(_nCompany); + query.exec(strQuery); + return true; } */ bool SPowercafe::STPowercafe::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "delete from powercafe_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into powercafe_" + QString::number(_nCompany) + "_update (category_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall," - "bodycountreal,replycountreal,allcountreal,usercountreal,community_title,community_url,platformname_num,platformname_name)" - " VALUES ("; + QString strQuery = "delete from powercafe_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into powercafe_" + QString::number(_nCompany) + "_update (category_num,rank,community_num,community_id,bodycountall,replycountall,allcountall,usercountall," + "bodycountreal,replycountreal,allcountreal,usercountreal,community_title,community_url,platformname_num,platformname_name)" + " VALUES ("; - query.clear(); + query.clear(); - foreach (const stPowercafe& stpowercafe, m_listMap) - { - QString str = strQuery; - str += QString::number(stpowercafe.category_num) + ","; - str += QString::number(stpowercafe.rank) + ","; - str += QString::number(stpowercafe.community_num) + ","; - str += "'" + sqlString(stpowercafe.community_id) + "',"; - str += QString::number(stpowercafe.bodycountall) + ","; - str += QString::number(stpowercafe.replycountall) + ","; - str += QString::number(stpowercafe.allcountall) + ","; - str += QString::number(stpowercafe.usercountall) + ","; - str += QString::number(stpowercafe.bodycountreal) + ","; - str += QString::number(stpowercafe.replycountreal) + ","; - str += QString::number(stpowercafe.allcountreal) + ","; - str += QString::number(stpowercafe.usercountreal) + ","; - str += "'" + sqlString(stpowercafe.community_title) + "',"; - str += "'" + sqlString(stpowercafe.community_url) + "',"; - str += QString::number(stpowercafe.platformname_num) + ","; - str += "'" + sqlString(stpowercafe.platformname_name) + "')"; + foreach (const stPowercafe& stpowercafe, m_listMap) + { + QString str = strQuery; + str += QString::number(stpowercafe.category_num) + ","; + str += QString::number(stpowercafe.rank) + ","; + str += QString::number(stpowercafe.community_num) + ","; + str += "'" + sqlString(stpowercafe.community_id) + "',"; + str += QString::number(stpowercafe.bodycountall) + ","; + str += QString::number(stpowercafe.replycountall) + ","; + str += QString::number(stpowercafe.allcountall) + ","; + str += QString::number(stpowercafe.usercountall) + ","; + str += QString::number(stpowercafe.bodycountreal) + ","; + str += QString::number(stpowercafe.replycountreal) + ","; + str += QString::number(stpowercafe.allcountreal) + ","; + str += QString::number(stpowercafe.usercountreal) + ","; + str += "'" + sqlString(stpowercafe.community_title) + "',"; + str += "'" + sqlString(stpowercafe.community_url) + "',"; + str += QString::number(stpowercafe.platformname_num) + ","; + str += "'" + sqlString(stpowercafe.platformname_name) + "')"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - strQuery = "update dbinfo set powercafecount = " + QString::number(m_listMap.size()) + " where company_num = " - + QString::number(_nCompany); - query.exec(strQuery); - return true; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + strQuery = "update dbinfo set powercafecount = " + QString::number(m_listMap.size()) + " where company_num = " + + QString::number(_nCompany); + query.exec(strQuery); + return true; } void SPowercafe::SStatsPowCafeRank::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); - QMap mapPowercafeAll; - for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) - { - /* - if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - //QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey(iterPos.value(), anColumn); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); - mapPowercafeAll[strKey].community_id = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - mapPowercafeAll[strKey].community_title = iterPos.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); - mapPowercafeAll[strKey].subject = "articlecountall"; - } - mapPowercafeAll[strKey].articlecountall++; - } + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); + QMap mapPowercafeAll; + for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) + { + /* + if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + //QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey(iterPos.value(), anColumn); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); + mapPowercafeAll[strKey].community_id = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + mapPowercafeAll[strKey].community_title = iterPos.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); + mapPowercafeAll[strKey].subject = "articlecountall"; + } + mapPowercafeAll[strKey].articlecountall++; + } - for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) - { - for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) - { - /* - if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; - */ - //QString strKey = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey(iterPos1.value(), anColumn); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); - mapPowercafeAll[strKey].community_id = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - mapPowercafeAll[strKey].community_title = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); - mapPowercafeAll[strKey].subject = "articlecountall"; - } - mapPowercafeAll[strKey].articlecountall++; - } - } + for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) + { + for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) + { + /* + if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; + */ + //QString strKey = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey(iterPos1.value(), anColumn); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); + mapPowercafeAll[strKey].community_id = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + mapPowercafeAll[strKey].community_title = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); + mapPowercafeAll[strKey].subject = "articlecountall"; + } + mapPowercafeAll[strKey].articlecountall++; + } + } - { - QList listPowercafe = mapPowercafeAll.values(); + { + QList listPowercafe = mapPowercafeAll.values(); - qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountAll()); - int rank = 1; - foreach (stStatsPowCafeRank ststats, listPowercafe) - { - ststats.rank = rank++; - m_listMap.push_back(ststats); - if (rank > 10) - break; - } - } + qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountAll()); + int rank = 1; + foreach (stStatsPowCafeRank ststats, listPowercafe) + { + ststats.rank = rank++; + m_listMap.push_back(ststats); + if (rank > 10) + break; + } + } - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapPowercafeReal; - const stReal& streal = iterPos.value(); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapPowercafeReal; + const stReal& streal = iterPos.value(); - foreach (const QString& url, streal.m_setRealBodyUrl) - { - //QString strKey = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey((*mapBody)[url], anColumn); - if (!mapPowercafeReal.contains(strKey)) - { - mapPowercafeReal.insert(strKey, stStatsPowCafeRank()); - mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapBody)[url])->id; - mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapBody)[url])->title; - mapPowercafeReal[strKey].subject = "articlecountreal"; - } - mapPowercafeReal[strKey].articlecountreal++; - } + foreach (const QString& url, streal.m_setRealBodyUrl) + { + //QString strKey = (*mapBody)[url][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey((*mapBody)[url], anColumn); + if (!mapPowercafeReal.contains(strKey)) + { + mapPowercafeReal.insert(strKey, stStatsPowCafeRank()); + mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapBody)[url])->id; + mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapBody)[url])->title; + mapPowercafeReal[strKey].subject = "articlecountreal"; + } + mapPowercafeReal[strKey].articlecountreal++; + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.begin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - //QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - QString strKey = getCommunityKey((*mapReply)[iterPos1.key()][iterPos1.value()], anColumn); - if (!mapPowercafeReal.contains(strKey)) - { - mapPowercafeReal.insert(strKey, stStatsPowCafeRank()); - mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->id; - mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->title; - mapPowercafeReal[strKey].subject = "aritclecountreal"; - } - mapPowercafeReal[strKey].articlecountreal++; - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.begin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + //QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + QString strKey = getCommunityKey((*mapReply)[iterPos1.key()][iterPos1.value()], anColumn); + if (!mapPowercafeReal.contains(strKey)) + { + mapPowercafeReal.insert(strKey, stStatsPowCafeRank()); + mapPowercafeReal[strKey].community_id = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->id; + mapPowercafeReal[strKey].community_title = _datagroup.getstCommunity((*mapReply)[iterPos1.key()][iterPos1.value()])->title; + mapPowercafeReal[strKey].subject = "aritclecountreal"; + } + mapPowercafeReal[strKey].articlecountreal++; + } - QList listPowercafe = mapPowercafeReal.values(); - qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountReal()); - int rank = 1; - foreach (stStatsPowCafeRank ststats, listPowercafe) - { - ststats.rank = rank++; - m_listMap.push_back(ststats); - if (rank > 10) - break; - } - } + QList listPowercafe = mapPowercafeReal.values(); + qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountReal()); + int rank = 1; + foreach (stStatsPowCafeRank ststats, listPowercafe) + { + ststats.rank = rank++; + m_listMap.push_back(ststats); + if (rank > 10) + break; + } + } } bool SPowercafe::STPowercafe::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "powercafe_" + QString::number(_nCompany) + " TO " + "powercafe_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "powercafe_" + QString::number(_nCompany) + "_update" + " TO " + "powercafe_" + QString::number(_nCompany) + ","; - strQuery += "powercafe_" + QString::number(_nCompany) + "_temp" + " TO " + "powercafe_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("powercafe_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("powercafe_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "powercafe_" + QString::number(_nCompany) + " TO " + "powercafe_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "powercafe_" + QString::number(_nCompany) + "_update" + " TO " + "powercafe_" + QString::number(_nCompany) + ","; + strQuery += "powercafe_" + QString::number(_nCompany) + "_temp" + " TO " + "powercafe_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("powercafe_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("powercafe_" + QString::number(_nCompany) + " rename table end"); + return true; } @@ -563,244 +563,244 @@ m_pSInitializer->insertLog("powercafe_" + QString::number(_nCompany) + " rename /* bool SPowercafe::SStatsPowCafeRank::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "delete from stats_pow_cafe_rank where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into stats_pow_cafe_rank (community_id,community_title,articlecountall,articlecountreal,usercountreal,subject,rank,company_num)" - "VALUES (:community_id,:community_title,:articlecountall,:articlecountreal,:usercountreal,:subject,:rank,:company_num)"; - query.clear(); - query.prepare(strQuery.toUtf8()); - foreach (const stStatsPowCafeRank& ststats, m_listMap) - { - query.bindValue(":community_id", ststats.community_id); - query.bindValue(":community_title", sqlString(ststats.community_title)); - query.bindValue(":articlecountall", ststats.articlecountall); - query.bindValue(":articlecountreal", ststats.articlecountreal); - query.bindValue(":usercountreal", ststats.usercountreal); - query.bindValue(":subject", ststats.subject); - query.bindValue(":rank", ststats.rank); - query.bindValue(":company_num", _nCompany); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + QString strQuery = "delete from stats_pow_cafe_rank where company_num = " + QString::number(_nCompany); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into stats_pow_cafe_rank (community_id,community_title,articlecountall,articlecountreal,usercountreal,subject,rank,company_num)" + "VALUES (:community_id,:community_title,:articlecountall,:articlecountreal,:usercountreal,:subject,:rank,:company_num)"; + query.clear(); + query.prepare(strQuery.toUtf8()); + foreach (const stStatsPowCafeRank& ststats, m_listMap) + { + query.bindValue(":community_id", ststats.community_id); + query.bindValue(":community_title", sqlString(ststats.community_title)); + query.bindValue(":articlecountall", ststats.articlecountall); + query.bindValue(":articlecountreal", ststats.articlecountreal); + query.bindValue(":usercountreal", ststats.usercountreal); + query.bindValue(":subject", ststats.subject); + query.bindValue(":rank", ststats.rank); + query.bindValue(":company_num", _nCompany); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } */ bool SPowercafe::SStatsPowCafeRank::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "delete from stats_pow_cafe_rank where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into stats_pow_cafe_rank (community_id,community_title,articlecountall,articlecountreal," - "usercountreal,subject,rank,company_num)" - "VALUES ("; - query.clear(); + QString strQuery = "delete from stats_pow_cafe_rank where company_num = " + QString::number(_nCompany); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into stats_pow_cafe_rank (community_id,community_title,articlecountall,articlecountreal," + "usercountreal,subject,rank,company_num)" + "VALUES ("; + query.clear(); - foreach (const stStatsPowCafeRank& ststats, m_listMap) - { - QString str = strQuery; - str += "'" + sqlString(ststats.community_id) + "',"; - str += "'" + sqlString(ststats.community_title) + "',"; - str += QString::number(ststats.articlecountall) + ","; - str += QString::number(ststats.articlecountreal) + ","; - str += QString::number(ststats.usercountreal) + ","; - str += "'" + ststats.subject + "',"; - str += QString::number(ststats.rank) + ","; - str += QString::number(_nCompany) + ")"; + foreach (const stStatsPowCafeRank& ststats, m_listMap) + { + QString str = strQuery; + str += "'" + sqlString(ststats.community_id) + "',"; + str += "'" + sqlString(ststats.community_title) + "',"; + str += QString::number(ststats.articlecountall) + ","; + str += QString::number(ststats.articlecountreal) + ","; + str += QString::number(ststats.usercountreal) + ","; + str += "'" + ststats.subject + "',"; + str += QString::number(ststats.rank) + ","; + str += QString::number(_nCompany) + ")"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } void SPowercafe::SBodyPowercafeMap::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - int num = 0; - const QStringList* orderedUrl = _datagroup.getOrderedUrl(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - const stReal& streal = iterPos.value(); - foreach (const QString& strUrl, *orderedUrl) - { - if (streal.m_setRealBodyUrl.contains(strUrl)) - { - stBodyPowercafeMap stbody; - stbody.num = num++; - stbody.body_num = _datagroup.getstBodyNum(strUrl); - stbody.community_num = _datagroup.getstBody(strUrl)->community_num; - stbody.category_num = iterPos.key(); - stbody.realin |= REAL_BODY; - stbody.date = _datagroup.getstBody(strUrl)->date; - stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; - m_listMap.append(stbody); - _datagroup.addRealBodyCategory(strUrl, iterPos.key()); - if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) - { - stbody.realin |= REAL_REPLY; + int num = 0; + const QStringList* orderedUrl = _datagroup.getOrderedUrl(); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + const stReal& streal = iterPos.value(); + foreach (const QString& strUrl, *orderedUrl) + { + if (streal.m_setRealBodyUrl.contains(strUrl)) + { + stBodyPowercafeMap stbody; + stbody.num = num++; + stbody.body_num = _datagroup.getstBodyNum(strUrl); + stbody.community_num = _datagroup.getstBody(strUrl)->community_num; + stbody.category_num = iterPos.key(); + stbody.realin |= REAL_BODY; + stbody.date = _datagroup.getstBody(strUrl)->date; + stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; + m_listMap.append(stbody); + _datagroup.addRealBodyCategory(strUrl, iterPos.key()); + if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) + { + stbody.realin |= REAL_REPLY; - foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) - { - _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); - } + foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) + { + _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); + } - } - } - } - } + } + } + } + } } void SPowercafe::SReplyPowercafeMap::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - int num = 0; - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - const stReal& streal = iterPos.value(); - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.end(); iterPos1++) - { - stReplyPowercafeMap streply; - streply.num = num++; - streply.body_num = _datagroup.getstBodyNum(iterPos1.key()); - streply.category_num = iterPos.key(); - streply.realin |= REAL_REPLY; - streply.community_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->community_num; - streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; - streply.body_date = _datagroup.getstBody(iterPos1.key())->date; - m_listMap.append(streply); + int num = 0; + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + const stReal& streal = iterPos.value(); + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.end(); iterPos1++) + { + stReplyPowercafeMap streply; + streply.num = num++; + streply.body_num = _datagroup.getstBodyNum(iterPos1.key()); + streply.category_num = iterPos.key(); + streply.realin |= REAL_REPLY; + streply.community_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->community_num; + streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; + streply.body_date = _datagroup.getstBody(iterPos1.key())->date; + m_listMap.append(streply); - _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key()); - } - } + _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key()); + } + } } /* bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate body_powercafe_map_" + QString::number(_nCompany) + "_update"; + QString strQuery = "truncate body_powercafe_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany) + "_update (num,category_num,community_num,body_num,realin)" - " values (:num,:category_num,:community_num,:body_num,:realin)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany) + "_update (num,category_num,community_num,body_num,realin)" + " values (:num,:category_num,:community_num,:body_num,:realin)"; + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stBodyPowercafeMap& stmap, m_listMap) - { - query.bindValue(":num", stmap.num); - query.bindValue(":category_num", stmap.category_num); - query.bindValue(":community_num", stmap.community_num); - query.bindValue(":body_num", stmap.body_num); - query.bindValue(":realin", stmap.realin); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stBodyPowercafeMap& stmap, m_listMap) + { + query.bindValue(":num", stmap.num); + query.bindValue(":category_num", stmap.category_num); + query.bindValue(":community_num", stmap.community_num); + query.bindValue(":body_num", stmap.body_num); + query.bindValue(":realin", stmap.realin); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } */ bool SPowercafe::SBodyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate body_powercafe_map_" + QString::number(_nCompany) + "_update"; + QString strQuery = "truncate body_powercafe_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany) - + "_update (num,category_num,community_num,body_num,realin,date,platformname_num)" - " values ("; - query.clear(); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into body_powercafe_map_" + QString::number(_nCompany) + + "_update (num,category_num,community_num,body_num,realin,date,platformname_num)" + " values ("; + query.clear(); - foreach (const stBodyPowercafeMap& stmap, m_listMap) - { - QString str = strQuery; - str += QString::number(stmap.num) + ","; - str += QString::number(stmap.category_num) + ","; - str += QString::number(stmap.community_num) + ","; - str += QString::number(stmap.body_num) + ","; - str += QString::number(stmap.realin) + ","; - str += "'" + sqlString(stmap.date) + "',"; - str += QString::number(stmap.platformname_num) + ")"; + foreach (const stBodyPowercafeMap& stmap, m_listMap) + { + QString str = strQuery; + str += QString::number(stmap.num) + ","; + str += QString::number(stmap.category_num) + ","; + str += QString::number(stmap.community_num) + ","; + str += QString::number(stmap.body_num) + ","; + str += QString::number(stmap.realin) + ","; + str += "'" + sqlString(stmap.date) + "',"; + str += QString::number(stmap.platformname_num) + ")"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } /* bool SPowercafe::SReplyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate reply_powercafe_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany) + "_update (num,category_num,community_num,body_num,reply_num,realin)" - " values (:num,:category_num,:community_num,:body_num,:reply_num,:realin)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + QString strQuery = "truncate reply_powercafe_map_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany) + "_update (num,category_num,community_num,body_num,reply_num,realin)" + " values (:num,:category_num,:community_num,:body_num,:reply_num,:realin)"; + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stReplyPowercafeMap& stmap, m_listMap) - { - query.bindValue(":num", stmap.num); - query.bindValue(":category_num", stmap.category_num); - query.bindValue(":community_num", stmap.community_num); - query.bindValue(":body_num", stmap.body_num); - query.bindValue(":realin", stmap.realin); - query.bindValue(":reply_num", stmap.reply_num); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stReplyPowercafeMap& stmap, m_listMap) + { + query.bindValue(":num", stmap.num); + query.bindValue(":category_num", stmap.category_num); + query.bindValue(":community_num", stmap.community_num); + query.bindValue(":body_num", stmap.body_num); + query.bindValue(":realin", stmap.realin); + query.bindValue(":reply_num", stmap.reply_num); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } */ @@ -808,448 +808,448 @@ bool SPowercafe::SReplyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_n bool SPowercafe::SReplyPowercafeMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate reply_powercafe_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany) - + "_update (num,category_num,community_num,body_num,reply_num,realin,body_date)" - " values ("; - query.clear(); + QString strQuery = "truncate reply_powercafe_map_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into reply_powercafe_map_" + QString::number(_nCompany) + + "_update (num,category_num,community_num,body_num,reply_num,realin,body_date)" + " values ("; + query.clear(); - foreach (const stReplyPowercafeMap& stmap, m_listMap) - { - QString str = strQuery; - str += QString::number(stmap.num) + ","; - str += QString::number(stmap.category_num) + ","; - str += QString::number(stmap.community_num) + ","; - str += QString::number(stmap.body_num) + ","; - str += QString::number(stmap.reply_num) + ","; - str += QString::number(stmap.realin) + ","; - str += "'" + sqlString(stmap.body_date) + "')"; + foreach (const stReplyPowercafeMap& stmap, m_listMap) + { + QString str = strQuery; + str += QString::number(stmap.num) + ","; + str += QString::number(stmap.category_num) + ","; + str += QString::number(stmap.community_num) + ","; + str += QString::number(stmap.body_num) + ","; + str += QString::number(stmap.reply_num) + ","; + str += QString::number(stmap.realin) + ","; + str += "'" + sqlString(stmap.body_date) + "')"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } bool SPowercafe::SBodyPowercafeMap::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "body_powercafe_map_" + QString::number(_nCompany) + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "body_powercafe_map_" + QString::number(_nCompany) + "_update" + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + ","; - strQuery += "body_powercafe_map_" + QString::number(_nCompany) + "_temp" + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("body_powercafe_map_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("body_powercafe_map_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "body_powercafe_map_" + QString::number(_nCompany) + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "body_powercafe_map_" + QString::number(_nCompany) + "_update" + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + ","; + strQuery += "body_powercafe_map_" + QString::number(_nCompany) + "_temp" + " TO " + "body_powercafe_map_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("body_powercafe_map_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("body_powercafe_map_" + QString::number(_nCompany) + " rename table end"); + return true; } bool SPowercafe::SReplyPowercafeMap::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + "_update" + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + ","; - strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + "_temp" + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("reply_powercafe_map_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("reply_powercafe_map_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + "_update" + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + ","; + strQuery += "reply_powercafe_map_" + QString::number(_nCompany) + "_temp" + " TO " + "reply_powercafe_map_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("reply_powercafe_map_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("reply_powercafe_map_" + QString::number(_nCompany) + " rename table end"); + return true; } void SPowercafe::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); - /* - QMap mapPowercafeAll; - for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) - { - if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; + /* + QMap mapPowercafeAll; + for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) + { + if (iterPos.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; - QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); - mapPowercafeAll[strKey].community_id = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - mapPowercafeAll[strKey].community_title = iterPos.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); - mapPowercafeAll[strKey].subject = "articlecountall"; - } - mapPowercafeAll[strKey].articlecountall++; - } + QString strKey = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); + mapPowercafeAll[strKey].community_id = iterPos.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + mapPowercafeAll[strKey].community_title = iterPos.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); + mapPowercafeAll[strKey].subject = "articlecountall"; + } + mapPowercafeAll[strKey].articlecountall++; + } - for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) - { - for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) - { + for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) + { + for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) + { - if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") - continue; + if (iterPos1.value()[anColumn[SInitializer::E_DATA_platform_form]].trimmed() != "cafe") + continue; - QString strKey = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - if (!mapPowercafeAll.contains(strKey)) - { - mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); - mapPowercafeAll[strKey].community_id = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); - mapPowercafeAll[strKey].community_title = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); - mapPowercafeAll[strKey].subject = "articlecountall"; - } - mapPowercafeAll[strKey].articlecountall++; - } - } + QString strKey = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + if (!mapPowercafeAll.contains(strKey)) + { + mapPowercafeAll.insert(strKey, stStatsPowCafeRank()); + mapPowercafeAll[strKey].community_id = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_id]].trimmed(); + mapPowercafeAll[strKey].community_title = iterPos1.value()[anColumn[SInitializer::E_DATA_platform_title]].trimmed(); + mapPowercafeAll[strKey].subject = "articlecountall"; + } + mapPowercafeAll[strKey].articlecountall++; + } + } - { - QList listPowercafe = mapPowercafeAll.values(); + { + QList listPowercafe = mapPowercafeAll.values(); - qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountAll()); - int rank = 1; - foreach (stStatsPowCafeRank ststats, listPowercafe) - { - ststats.rank = rank++; - m_listMap.push_back(ststats); - if (rank > 10) - break; - } - } - */ + qSort(listPowercafe.begin(), listPowercafe.end(), isGreaterCountAll()); + int rank = 1; + foreach (stStatsPowCafeRank ststats, listPowercafe) + { + ststats.rank = rank++; + m_listMap.push_back(ststats); + if (rank > 10) + break; + } + } + */ - stReal allCategory; + stReal allCategory; - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapScore; - const stReal& streal = iterPos.value(); - QDate dateStart(2030, 1, 1); - QDate dateEnd(2000, 1, 1); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapScore; + const stReal& streal = iterPos.value(); + QDate dateStart(2030, 1, 1); + QDate dateEnd(2000, 1, 1); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| - ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) - continue; - allCategory.m_setRealBodyUrl.insert(_url); - allCategory.m_setRealAllUrl.insert(_url); - //QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; - strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stPowercafeRank()); - mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[_url])->url; - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->title ; - if (mapScore[strKey].community.trimmed().isEmpty()) - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->id; - } - mapScore[strKey].count++; - QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| + ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) + continue; + allCategory.m_setRealBodyUrl.insert(_url); + allCategory.m_setRealAllUrl.insert(_url); + //QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; + strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stPowercafeRank()); + mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[_url])->url; + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->title ; + if (mapScore[strKey].community.trimmed().isEmpty()) + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->id; + } + mapScore[strKey].count++; + QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| - ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) - continue; - allCategory.m_setRealAllUrl.insert(iterPos1.key()); - if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) - allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| + ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) + continue; + allCategory.m_setRealAllUrl.insert(iterPos1.key()); + if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) + allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); - QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed(); - QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; - strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stPowercafeRank()); - mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[strUrl])->url; - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->title; - if (mapScore[strKey].community.trimmed().isEmpty()) - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->id; - } - mapScore[strKey].count++; - QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed(); + QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; + strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stPowercafeRank()); + mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[strUrl])->url; + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->title; + if (mapScore[strKey].community.trimmed().isEmpty()) + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->id; + } + mapScore[strKey].count++; + QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - //QList listSpammer; - QMap > mapRank; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - QString strPlatformName = iterPos1.key().split(",").at(1); - if (!mapRank.contains(m_pSInitializer->getPlatformName(strPlatformName))) - mapRank.insert(m_pSInitializer->getPlatformName(strPlatformName), QList()); + //QList listSpammer; + QMap > mapRank; + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + QString strPlatformName = iterPos1.key().split(",").at(1); + if (!mapRank.contains(m_pSInitializer->getPlatformName(strPlatformName))) + mapRank.insert(m_pSInitializer->getPlatformName(strPlatformName), QList()); - mapRank[m_pSInitializer->getPlatformName(strPlatformName)].append(iterPos1.value()); - } + mapRank[m_pSInitializer->getPlatformName(strPlatformName)].append(iterPos1.value()); + } - for (QMap >::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++) - qSort(iterPos1.value().begin(), iterPos1.value().end(), isGreaterCountReal()); + for (QMap >::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++) + qSort(iterPos1.value().begin(), iterPos1.value().end(), isGreaterCountReal()); - QList keys = mapRank.keys().toSet().toList(); + QList keys = mapRank.keys().toSet().toList(); - QJsonArray jsonArray; - stStatsJson stjsonRank; - { - stjsonRank.category_num = iterPos.key(); - stjsonRank.servicenum = 4; - stjsonRank.title = "rank"; - stjsonRank.subtitle = ""; - stjsonRank.platformname_num = 1; - } - int nTotalCount = 0; - for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) - { - QList values = mapRank.value(*iterPos1); - int nRankLimit = (values.size() <= 10) ? values.size() : 10; - QJsonObject jsonObj; - jsonObj["platformname_num"] = *iterPos1; - QJsonArray jsonSubArray; - for (int i = 0; i < nRankLimit; i++) - { - QJsonObject jsonSubObj; - jsonSubObj["rank"] = i + 1; - jsonSubObj["realcount"] = values.at(i).count; - jsonSubObj["community"] = values.at(i).community; - if (values.at(i).url.contains("instagram.com")) - jsonSubObj["url"] = "https://www." + values.at(i).url; - else if (values.at(i).url.contains("cafe.naver.com")) - jsonSubObj["url"] = "http://" + values.at(i).url; - else if (values.at(i).url.contains("facebook.com")) - jsonSubObj["url"] = "https://www." + values.at(i).url; - else if (values.at(i).url.contains("kakaostory.com")) - jsonSubObj["url"] = "https://" + values.at(i).url; - else if (values.at(i).url.contains("cafe.daum.net")) - jsonSubObj["url"] = "http://" + values.at(i).url; - else - jsonSubObj["url"] = "http://" + values.at(i).url; - jsonSubArray.append(jsonSubObj); - } - jsonObj["data"] = jsonSubArray; - jsonArray.append(jsonObj); - nTotalCount += values.size(); - } - QJsonObject jObj; - jObj["data"] = jsonArray; - jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); - jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); - jObj["totalcount"] = nTotalCount; - QJsonDocument jsonDoc(jObj); - stjsonRank.jdata = jsonDoc.toJson(); - m_listMap.append(stjsonRank); - } + QJsonArray jsonArray; + stStatsJson stjsonRank; + { + stjsonRank.category_num = iterPos.key(); + stjsonRank.servicenum = 4; + stjsonRank.title = "rank"; + stjsonRank.subtitle = ""; + stjsonRank.platformname_num = 1; + } + int nTotalCount = 0; + for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) + { + QList values = mapRank.value(*iterPos1); + int nRankLimit = (values.size() <= 10) ? values.size() : 10; + QJsonObject jsonObj; + jsonObj["platformname_num"] = *iterPos1; + QJsonArray jsonSubArray; + for (int i = 0; i < nRankLimit; i++) + { + QJsonObject jsonSubObj; + jsonSubObj["rank"] = i + 1; + jsonSubObj["realcount"] = values.at(i).count; + jsonSubObj["community"] = values.at(i).community; + if (values.at(i).url.contains("instagram.com")) + jsonSubObj["url"] = "https://www." + values.at(i).url; + else if (values.at(i).url.contains("cafe.naver.com")) + jsonSubObj["url"] = "http://" + values.at(i).url; + else if (values.at(i).url.contains("facebook.com")) + jsonSubObj["url"] = "https://www." + values.at(i).url; + else if (values.at(i).url.contains("kakaostory.com")) + jsonSubObj["url"] = "https://" + values.at(i).url; + else if (values.at(i).url.contains("cafe.daum.net")) + jsonSubObj["url"] = "http://" + values.at(i).url; + else + jsonSubObj["url"] = "http://" + values.at(i).url; + jsonSubArray.append(jsonSubObj); + } + jsonObj["data"] = jsonSubArray; + jsonArray.append(jsonObj); + nTotalCount += values.size(); + } + QJsonObject jObj; + jObj["data"] = jsonArray; + jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); + jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); + jObj["totalcount"] = nTotalCount; + QJsonDocument jsonDoc(jObj); + stjsonRank.jdata = jsonDoc.toJson(); + m_listMap.append(stjsonRank); + } - //all Category - { - QMap mapScore; - const stReal& streal = allCategory; - QDate dateStart(2030, 1, 1); - QDate dateEnd(2000, 1, 1); + //all Category + { + QMap mapScore; + const stReal& streal = allCategory; + QDate dateStart(2030, 1, 1); + QDate dateEnd(2000, 1, 1); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| - ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) - continue; - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; - strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stPowercafeRank()); - mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[_url])->url; - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->title ; - if (mapScore[strKey].community.trimmed().isEmpty()) - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->id; - } - mapScore[strKey].count++; - QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + if (((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| + ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) + continue; + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; + strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stPowercafeRank()); + mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[_url])->url; + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->title ; + if (mapScore[strKey].community.trimmed().isEmpty()) + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[_url])->id; + } + mapScore[strKey].count++; + QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| - ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) - continue; - QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed(); - QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; - strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stPowercafeRank()); - mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[strUrl])->url; - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->title; - if (mapScore[strKey].community.trimmed().isEmpty()) - mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->id; - } - mapScore[strKey].count++; - QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + if (((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "blog")|| + ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed() == "news" )) + continue; + QString strUrl = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_url]].trimmed(); + QString strKey = (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_id]].trimmed() + ","; + strKey += ((*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[strUrl][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stPowercafeRank()); + mapScore[strKey].url = _datagroup.getstCommunity((*mapBody)[strUrl])->url; + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->title; + if (mapScore[strKey].community.trimmed().isEmpty()) + mapScore[strKey].community = _datagroup.getstCommunity((*mapBody)[strUrl])->id; + } + mapScore[strKey].count++; + QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - //QList listSpammer; - QMap > mapRank; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - QString strPlatformName = iterPos1.key().split(",").at(1); - if (!mapRank.contains(m_pSInitializer->getPlatformName(strPlatformName))) - mapRank.insert(m_pSInitializer->getPlatformName(strPlatformName), QList()); + //QList listSpammer; + QMap > mapRank; + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + QString strPlatformName = iterPos1.key().split(",").at(1); + if (!mapRank.contains(m_pSInitializer->getPlatformName(strPlatformName))) + mapRank.insert(m_pSInitializer->getPlatformName(strPlatformName), QList()); - mapRank[m_pSInitializer->getPlatformName(strPlatformName)].append(iterPos1.value()); - } + mapRank[m_pSInitializer->getPlatformName(strPlatformName)].append(iterPos1.value()); + } - for (QMap >::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++) - qSort(iterPos1.value().begin(), iterPos1.value().end(), isGreaterCountReal()); + for (QMap >::iterator iterPos1 = mapRank.begin(); iterPos1 != mapRank.end(); iterPos1++) + qSort(iterPos1.value().begin(), iterPos1.value().end(), isGreaterCountReal()); - QList keys = mapRank.keys().toSet().toList(); + QList keys = mapRank.keys().toSet().toList(); - QJsonArray jsonArray; - stStatsJson stjsonRank; - { - stjsonRank.category_num = -1; - stjsonRank.servicenum = 4; - stjsonRank.title = "rank"; - stjsonRank.subtitle = ""; - stjsonRank.platformname_num = 1; - } - int nTotalCount = 0; - for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) - { - QList values = mapRank.value(*iterPos1); - int nRankLimit = (values.size() <= 10) ? values.size() : 10; - QJsonObject jsonObj; - jsonObj["platformname_num"] = *iterPos1; - QJsonArray jsonSubArray; - for (int i = 0; i < nRankLimit; i++) - { - QJsonObject jsonSubObj; - jsonSubObj["rank"] = i + 1; - jsonSubObj["realcount"] = values.at(i).count; - jsonSubObj["community"] = values.at(i).community; - if (values.at(i).url.contains("instagram.com")) - jsonSubObj["url"] = "https://www." + values.at(i).url; - else if (values.at(i).url.contains("cafe.naver.com")) - jsonSubObj["url"] = "http://" + values.at(i).url; - else if (values.at(i).url.contains("facebook.com")) - jsonSubObj["url"] = "https://www." + values.at(i).url; - else if (values.at(i).url.contains("kakaostory.com")) - jsonSubObj["url"] = "https://" + values.at(i).url; - else if (values.at(i).url.contains("cafe.daum.net")) - jsonSubObj["url"] = "http://" + values.at(i).url; - else - jsonSubObj["url"] = "http://" + values.at(i).url; - jsonSubArray.append(jsonSubObj); - } - jsonObj["data"] = jsonSubArray; - jsonArray.append(jsonObj); - nTotalCount += values.size(); - } - QJsonObject jObj; - jObj["data"] = jsonArray; - jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); - jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); - jObj["totalcount"] = nTotalCount; - QJsonDocument jsonDoc(jObj); - stjsonRank.jdata = jsonDoc.toJson(); - m_listMap.append(stjsonRank); - } + QJsonArray jsonArray; + stStatsJson stjsonRank; + { + stjsonRank.category_num = -1; + stjsonRank.servicenum = 4; + stjsonRank.title = "rank"; + stjsonRank.subtitle = ""; + stjsonRank.platformname_num = 1; + } + int nTotalCount = 0; + for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) + { + QList values = mapRank.value(*iterPos1); + int nRankLimit = (values.size() <= 10) ? values.size() : 10; + QJsonObject jsonObj; + jsonObj["platformname_num"] = *iterPos1; + QJsonArray jsonSubArray; + for (int i = 0; i < nRankLimit; i++) + { + QJsonObject jsonSubObj; + jsonSubObj["rank"] = i + 1; + jsonSubObj["realcount"] = values.at(i).count; + jsonSubObj["community"] = values.at(i).community; + if (values.at(i).url.contains("instagram.com")) + jsonSubObj["url"] = "https://www." + values.at(i).url; + else if (values.at(i).url.contains("cafe.naver.com")) + jsonSubObj["url"] = "http://" + values.at(i).url; + else if (values.at(i).url.contains("facebook.com")) + jsonSubObj["url"] = "https://www." + values.at(i).url; + else if (values.at(i).url.contains("kakaostory.com")) + jsonSubObj["url"] = "https://" + values.at(i).url; + else if (values.at(i).url.contains("cafe.daum.net")) + jsonSubObj["url"] = "http://" + values.at(i).url; + else + jsonSubObj["url"] = "http://" + values.at(i).url; + jsonSubArray.append(jsonSubObj); + } + jsonObj["data"] = jsonSubArray; + jsonArray.append(jsonObj); + nTotalCount += values.size(); + } + QJsonObject jObj; + jObj["data"] = jsonArray; + jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); + jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); + jObj["totalcount"] = nTotalCount; + QJsonDocument jsonDoc(jObj); + stjsonRank.jdata = jsonDoc.toJson(); + m_listMap.append(stjsonRank); + } } bool SPowercafe::SStatsJson::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QSqlQuery query(_db); - { - QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 4"; - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } + QSqlQuery query(_db); + { + QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 4"; + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } - foreach (const stStatsJson& ststats, m_listMap) - { -// QString strQuery = "insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values ("; -// strQuery += QString::number(_nCompany) + ","; -// strQuery += QString::number(ststats.servicenum) + ","; -// strQuery += "'" + ststats.title + "',"; -// strQuery += "'" + ststats.subtitle + "',"; -// strQuery += QString::number(ststats.category_num) + ","; -// strQuery += QString::number(ststats.platformname_num) + ","; -// strQuery += "'" + ststats.jdata +"')"; + foreach (const stStatsJson& ststats, m_listMap) + { + // QString strQuery = "insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values ("; + // strQuery += QString::number(_nCompany) + ","; + // strQuery += QString::number(ststats.servicenum) + ","; + // strQuery += "'" + ststats.title + "',"; + // strQuery += "'" + ststats.subtitle + "',"; + // strQuery += QString::number(ststats.category_num) + ","; + // strQuery += QString::number(ststats.platformname_num) + ","; + // strQuery += "'" + ststats.jdata +"')"; -// if (!query.exec(strQuery.toUtf8())) -// { -// m_pSInitializer->insertLog(query.lastQuery()); -// m_pSInitializer->insertLog(query.lastError().text()); -// return false; -// } + // if (!query.exec(strQuery.toUtf8())) + // { + // m_pSInitializer->insertLog(query.lastQuery()); + // m_pSInitializer->insertLog(query.lastError().text()); + // return false; + // } - query.prepare("insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values " - "(:company_num, :servicenum, :title, :subtitle, :category_num, :platformname_num, :jdata)"); - query.bindValue(":company_num", _nCompany); - query.bindValue(":servicenum", ststats.servicenum); - query.bindValue(":title", ststats.title); - query.bindValue(":subtitle", ststats.subtitle); - query.bindValue(":category_num", ststats.category_num); - query.bindValue(":platformname_num", ststats.platformname_num); - query.bindValue(":jdata", ststats.jdata); + query.prepare("insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values " + "(:company_num, :servicenum, :title, :subtitle, :category_num, :platformname_num, :jdata)"); + query.bindValue(":company_num", _nCompany); + query.bindValue(":servicenum", ststats.servicenum); + query.bindValue(":title", ststats.title); + query.bindValue(":subtitle", ststats.subtitle); + query.bindValue(":category_num", ststats.category_num); + query.bindValue(":platformname_num", ststats.platformname_num); + query.bindValue(":jdata", ststats.jdata); - if (!query.exec()) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } + if (!query.exec()) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } - } - return true; + } + return true; } diff --git a/FilterProcess/spowercafe.h b/FilterProcess/spowercafe.h index 93c8d51..66e5f5e 100644 --- a/FilterProcess/spowercafe.h +++ b/FilterProcess/spowercafe.h @@ -1,216 +1,226 @@ #ifndef SPOWERCAFE #define SPOWERCAFE + #include "sservice.h" #include "sfilteralgorithm.h" #include "sinitializer.h" class QString; class QStringList; -class SPowercafe:public SService + +class SPowercafe : public SService { public: - struct stReal - { - QSet m_setRealAllUrl; - QSet m_setRealBodyUrl; - QMap m_mapRealReplyUniqueUrl; //multiple - }; + struct stReal + { + QSet m_setRealAllUrl; + QSet m_setRealBodyUrl; + QMap m_mapRealReplyUniqueUrl; //multiple + }; - struct stPowercafe - { - int category_num; - int community_num; - QString community_id; - int bodycountall; - int replycountall; - int allcountall; - int usercountall; - int bodycountreal; - int replycountreal; - int allcountreal; - int usercountreal; - int rank; + struct stPowercafe + { + stPowercafe():category_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0), + replycountreal(0), allcountreal(0), usercountreal(0), rank(0), platformname_num(0){} - QString community_title; - QString community_url; - int platformname_num; - QString platformname_name; + int category_num; + int community_num; + QString community_id; + int bodycountall; + int replycountall; + int allcountall; + int usercountall; + int bodycountreal; + int replycountreal; + int allcountreal; + int usercountreal; + int rank; - stPowercafe():category_num(0), community_num(0), bodycountall(0), replycountall(0), allcountall(0), usercountall(0), bodycountreal(0), - replycountreal(0), allcountreal(0), usercountreal(0), rank(0), platformname_num(0){} - }; + QString community_title; + QString community_url; + int platformname_num; + QString platformname_name; - struct stStatsPowCafeRank - { - QString community_id; - QString community_title; - int articlecountall; - int articlecountreal; - int usercountreal; - QString subject; - int rank; - int company_num; - stStatsPowCafeRank(): articlecountall(0), articlecountreal(0), usercountreal(0), rank(0), company_num(0){} - }; + }; - struct stBodyPowercafeMap - { - int num; - int body_num; - int community_num; - int category_num; - int realin; - QString date; - int platformname_num; - stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){} - }; + struct stStatsPowCafeRank + { + stStatsPowCafeRank(): articlecountall(0), articlecountreal(0), usercountreal(0), rank(0), company_num(0){} - struct stReplyPowercafeMap - { - int num; - int reply_num; - int body_num; - int community_num; - int category_num; - int realin; - QString body_date; - stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {} - }; + QString community_id; + QString community_title; + int articlecountall; + int articlecountreal; + int usercountreal; + QString subject; + int rank; + int company_num; - class STPowercafe - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + }; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); + struct stBodyPowercafeMap + { + stBodyPowercafeMap():num(0), body_num(0), community_num(0), category_num(0), realin(0), platformname_num(0){} - }; + int num; + int body_num; + int community_num; + int category_num; + int realin; + QString date; + int platformname_num; - class SStatsPowCafeRank - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + }; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - }; + struct stReplyPowercafeMap + { + stReplyPowercafeMap():num(0), reply_num(0), body_num(0), community_num(0), category_num(0), realin(0) {} - class SBodyPowercafeMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + int num; + int reply_num; + int body_num; + int community_num; + int category_num; + int realin; + QString body_date; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + }; - class SReplyPowercafeMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; + class STPowercafe + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + private: + SInitializer *m_pSInitializer; + QList m_listMap; - struct stStatsJson - { - int company_num; - int servicenum; - QString title; - QString subtitle; - int platformname_num; - QString jdata; - int category_num; - stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){} - }; + }; + class SStatsPowCafeRank + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); - class SStatsJson - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear(){ m_listMap.clear(); } - }; + private: + SInitializer *m_pSInitializer; + QList m_listMap; + }; - struct stPowercafeRank - { - int count; - QString url; - QString community; - stPowercafeRank(): count(0){} - }; + class SBodyPowercafeMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); - struct isGreaterCountReal - { - bool operator()(const stPowercafe& first, const stPowercafe& second) - { - return first.allcountreal > second.allcountreal; - } - bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second) - { - return first.articlecountreal > second.articlecountreal; - } - bool operator()(const stPowercafeRank& first, const stPowercafeRank& second) - { - return first.count > second.count; - } - }; + private: + SInitializer *m_pSInitializer; + QList m_listMap; - struct isGreaterCountAll - { - bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second) - { - return first.articlecountall > second.articlecountall; - } - }; + }; + class SReplyPowercafeMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + private: + SInitializer *m_pSInitializer; + QList m_listMap; + }; -private: - SFilterAlgorithm m_SFilterAlgorithm; - QMap m_mapCategory; - SBodyPowercafeMap m_SBodyPowercafeMap; - SReplyPowercafeMap m_SReplyPowercafeMap; - STPowercafe m_STPowercafe; - //SStatsPowCafeRank m_SStatsPowCafeRank; - SStatsJson m_SStatsJson; + struct stStatsJson + { + stStatsJson():company_num(0), servicenum(2), platformname_num(1), category_num(0){} + int company_num; + int servicenum; + QString title; + QString subtitle; + int platformname_num; + QString jdata; + int category_num; + + }; + + class SStatsJson + { + public: + void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase& _db, const int &_nCompany); + void clear(){ m_listMap.clear(); } + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + struct stPowercafeRank + { + stPowercafeRank(): count(0){} + + int count; + QString url; + QString community; + + }; + + struct isGreaterCountReal + { + bool operator()(const stPowercafe& first, const stPowercafe& second) + { + return first.allcountreal > second.allcountreal; + } + bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second) + { + return first.articlecountreal > second.articlecountreal; + } + bool operator()(const stPowercafeRank& first, const stPowercafeRank& second) + { + return first.count > second.count; + } + }; + + struct isGreaterCountAll + { + bool operator()(const stStatsPowCafeRank& first, const stStatsPowCafeRank& second) + { + return first.articlecountall > second.articlecountall; + } + }; public: - virtual void setInitiaizer(SInitializer &_initializer); - virtual bool uploadData(int _companyNum); - virtual bool changeTable(int _companyNum); - virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); - virtual bool makeOverallCategory(int _categoryNum); - virtual bool makeTable(SDatagroup &_datagroup); + virtual void setInitiaizer(SInitializer &_initializer); + virtual bool uploadData(int _companyNum); + virtual bool changeTable(int _companyNum); + virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); + virtual bool makeOverallCategory(int _categoryNum); + virtual bool makeTable(SDatagroup &_datagroup); + +private: + SFilterAlgorithm m_SFilterAlgorithm; + QMap m_mapCategory; + SBodyPowercafeMap m_SBodyPowercafeMap; + SReplyPowercafeMap m_SReplyPowercafeMap; + STPowercafe m_STPowercafe; + SStatsJson m_SStatsJson; }; #endif // SPOWERCAFE - diff --git a/FilterProcess/sservice.h b/FilterProcess/sservice.h index 3f4e80d..aaa3a56 100644 --- a/FilterProcess/sservice.h +++ b/FilterProcess/sservice.h @@ -1,12 +1,12 @@ #ifndef SSERVICE #define SSERVICE + #include "sinitializer.h" #include "sdatagroup.h" #include + class SService { -protected: - SInitializer* m_pSInitializer; public: virtual void setInitiaizer(SInitializer &_initializer) = 0; virtual bool uploadData(int _companyNum) = 0; @@ -15,7 +15,10 @@ public: virtual bool makeOverallCategory(int _categoryNum) = 0; virtual bool makeTable(SDatagroup &_datagroup) = 0; QString convertJsonToStr(int _nSelect, const QString& _strJson); + +protected: + SInitializer* m_pSInitializer; + }; #endif // SSERVICE - diff --git a/FilterProcess/sspammer.cpp b/FilterProcess/sspammer.cpp index f4ef467..b49736c 100644 --- a/FilterProcess/sspammer.cpp +++ b/FilterProcess/sspammer.cpp @@ -16,387 +16,324 @@ void SSpammer::setInitiaizer(SInitializer &_initializer) { - m_pSInitializer = &_initializer; - m_SBodySpammerMap.setInitiaizer(_initializer); - m_SReplySpammerMap.setInitiaizer(_initializer); - //m_SStatsSpaSpammerRank.setInitiaizer(_initializer); - m_STSpammer.setInitiaizer(_initializer); - m_SStatsJson.setInitiaizer(_initializer); + m_pSInitializer = &_initializer; + m_SBodySpammerMap.setInitiaizer(_initializer); + m_SReplySpammerMap.setInitiaizer(_initializer); + m_STSpammer.setInitiaizer(_initializer); + m_SStatsJson.setInitiaizer(_initializer); } bool SSpammer::uploadData(int _companyNum) { - m_pSInitializer->insertLog("Start upload Spammer"); + m_pSInitializer->insertLog("Start upload Spammer"); - QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); - m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Spammer (Start)"); - if (!m_SBodySpammerMap.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload Spammer body map"); - return false; - } - if (!m_SReplySpammerMap.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload Spammer reply map"); - return false; - } - /* - if (!m_SStatsSpaSpammerRank.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload stats_spa_spammer_rank"); - return false; - } - */ - if (!m_STSpammer.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload spammer"); - return false; - } - if (!m_SStatsJson.uploadData(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to upload statsjson"); - return false; - } - m_pSInitializer->insertLog("End upload Spammer"); - m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Spammer (Finish)"); + QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); + m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Spammer (Start)"); + if (!m_SBodySpammerMap.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload Spammer body map"); + return false; + } + if (!m_SReplySpammerMap.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload Spammer reply map"); + return false; + } + if (!m_STSpammer.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload spammer"); + return false; + } + if (!m_SStatsJson.uploadData(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to upload statsjson"); + return false; + } + m_pSInitializer->insertLog("End upload Spammer"); + m_pSInitializer->updateWebDBInfoState(dbWeb, _companyNum, "Spammer (Finish)"); - return true; + return true; } bool SSpammer::changeTable(int _companyNum) { - m_pSInitializer->insertLog("Start table change spammer"); - QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); - if (!m_SBodySpammerMap.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change spammer body map"); - return false; - } - if (!m_SReplySpammerMap.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change spammer reply map"); - return false; - } - if (!m_STSpammer.changeTable(dbWeb, _companyNum)) - { - m_pSInitializer->insertLog("Fail to change spammer"); - return false; - } - return true; + m_pSInitializer->insertLog("Start table change spammer"); + QSqlDatabase dbWeb = m_pSInitializer->getDatabase(SDBManager::E_DATABASE_WEB); + if (!m_SBodySpammerMap.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change spammer body map"); + return false; + } + if (!m_SReplySpammerMap.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change spammer reply map"); + return false; + } + if (!m_STSpammer.changeTable(dbWeb, _companyNum)) + { + m_pSInitializer->insertLog("Fail to change spammer"); + return false; + } + return true; } bool SSpammer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter) { - QVector vecData[SInitializer::E_ARTICLE_MAX]; - bool bFiltered[SInitializer::E_ARTICLE_MAX]; + QVector vecData[SInitializer::E_ARTICLE_MAX]; + bool bFiltered[SInitializer::E_ARTICLE_MAX]; - for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) - bFiltered[i] = false; - _datagroup.copyData(vecData); - m_pSInitializer->insertDebugLog(QString("Spammer Category: ") + m_pSInitializer->getCategoryName(_nCategory)); - foreach (const SInitializer::stFilter& filter, _listFilter) - { - switch(filter.m_nType) - { - case E_FILTER_TYPE_DATE://Date - m_SFilterAlgorithm.FilterDate(vecData, bFiltered, filter.m_vData.toString(), - m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_article_date]); + for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) + bFiltered[i] = false; + _datagroup.copyData(vecData); + m_pSInitializer->insertDebugLog(QString("Spammer Category: ") + m_pSInitializer->getCategoryName(_nCategory)); + foreach (const SInitializer::stFilter& filter, _listFilter) + { + switch(filter.m_nType) + { + case E_FILTER_TYPE_DATE://Date + m_SFilterAlgorithm.FilterDate(vecData, bFiltered, filter.m_vData.toString(), + m_pSInitializer->getColumnIntArray()[SInitializer::E_DATA_article_date]); - break; - case E_FILTER_TYPE_SEARCH: - m_SFilterAlgorithm.FilterSearch(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_SEARCH: + m_SFilterAlgorithm.FilterSearch(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_LENGTH: - m_SFilterAlgorithm.FilterLength(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_REPLACE: - m_SFilterAlgorithm.FilterReplace(vecData, bFiltered, filter.m_vData.toString()); - break; - case E_FILTER_TYPE_COUNTER: - m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); - break; - } - m_pSInitializer->insertDebugLog("Body: " + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + ", " + - "Reply: " + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ", " + - SService::convertJsonToStr(filter.m_nType, filter.m_vData.toString())); - } - stReal streal; - m_pSInitializer->insertLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + - QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); - m_pSInitializer->insertDebugLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + - QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); - m_pSInitializer->insertDebugLog(""); - const int *anColumn = m_pSInitializer->getColumnIntArray(); - if (bFiltered[SInitializer::E_ARTICLE_BODY]) - { - foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_BODY]) - { - streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - streal.m_setRealBodyUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - } - } + break; + case E_FILTER_TYPE_LENGTH: + m_SFilterAlgorithm.FilterLength(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_REPLACE: + m_SFilterAlgorithm.FilterReplace(vecData, bFiltered, filter.m_vData.toString()); + break; + case E_FILTER_TYPE_COUNTER: + m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); + break; + } + m_pSInitializer->insertDebugLog("Body: " + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + ", " + + "Reply: " + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ", " + + SService::convertJsonToStr(filter.m_nType, filter.m_vData.toString())); + } + stReal streal; + m_pSInitializer->insertLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); + m_pSInitializer->insertDebugLog(QString("Category:") + m_pSInitializer->getCategoryName(_nCategory) + ",(" + + QString::number(vecData[SInitializer::E_ARTICLE_BODY].size()) + '/' + QString::number(vecData[SInitializer::E_ARTICLE_REPLY].size()) + ")" + "(Body/Reply)" ); + m_pSInitializer->insertDebugLog(""); + const int *anColumn = m_pSInitializer->getColumnIntArray(); + if (bFiltered[SInitializer::E_ARTICLE_BODY]) + { + foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_BODY]) + { + streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + streal.m_setRealBodyUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + } + } - if (bFiltered[SInitializer::E_ARTICLE_REPLY]) - { - foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_REPLY]) - { - streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - streal.m_mapRealReplyUniqueUrl.insertMulti(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed(), - strlist[anColumn[SInitializer::E_DATA_article_order]].trimmed().toInt()); - _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); - } - } + if (bFiltered[SInitializer::E_ARTICLE_REPLY]) + { + foreach (const QStringList& strlist, vecData[SInitializer::E_ARTICLE_REPLY]) + { + streal.m_setRealAllUrl.insert(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + streal.m_mapRealReplyUniqueUrl.insertMulti(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed(), + strlist[anColumn[SInitializer::E_DATA_article_order]].trimmed().toInt()); + _datagroup.addRealUrl(strlist[anColumn[SInitializer::E_DATA_article_url]].trimmed()); + } + } - m_mapCategory.insert(_nCategory, streal); - return true; + m_mapCategory.insert(_nCategory, streal); + return true; } bool SSpammer::makeOverallCategory(int _categoryNum) { - if (m_mapCategory.size() < 1) - return true; + if (m_mapCategory.size() < 1) + return true; - stReal streal; - for (QMap::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ ) - { - stReal& val = iterPos.value(); - foreach (const QString& _strurl, val.m_setRealBodyUrl ) - streal.m_setRealBodyUrl.insert(_strurl); - foreach (const QString& _strurl, val.m_setRealAllUrl ) - streal.m_setRealAllUrl.insert(_strurl); + stReal streal; + for (QMap::iterator iterPos = m_mapCategory.begin(); iterPos != m_mapCategory.end(); iterPos++ ) + { + stReal& val = iterPos.value(); + foreach (const QString& _strurl, val.m_setRealBodyUrl ) + streal.m_setRealBodyUrl.insert(_strurl); + foreach (const QString& _strurl, val.m_setRealAllUrl ) + streal.m_setRealAllUrl.insert(_strurl); - for (QMap::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end(); - iterPos1++) - { - if (streal.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) && streal.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) - continue; - else - streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); - } - } + for (QMap::iterator iterPos1 = val.m_mapRealReplyUniqueUrl.begin(); iterPos1 != val.m_mapRealReplyUniqueUrl.end(); + iterPos1++) + { + if (streal.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) && streal.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) + continue; + else + streal.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); + } + } - m_mapCategory.insert(_categoryNum, streal); - return true; + m_mapCategory.insert(_categoryNum, streal); + return true; } bool SSpammer::makeTable(SDatagroup &_datagroup) { - if (m_mapCategory.size() > 0) - { - m_pSInitializer->insertLog("Make spammer tables"); - m_pSInitializer->insertLog("Make spammer spammer"); - m_STSpammer.makeTable(_datagroup, m_mapCategory, m_setSpammer); - /* - m_pSInitializer->insertLog("Make spammer stats_spa_spammer_rank tables"); - m_SStatsSpaSpammerRank.makeTable(_datagroup, m_mapCategory); - */ - m_pSInitializer->insertLog("Make spammer body tables"); - m_SBodySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); - m_pSInitializer->insertLog("Make spammer reply tables"); - m_SReplySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); - m_pSInitializer->insertLog("Make sstatsjson table"); - m_SStatsJson.makeTable(_datagroup, m_mapCategory); - } + if (m_mapCategory.size() > 0) + { + m_pSInitializer->insertLog("Make spammer tables"); + m_pSInitializer->insertLog("Make spammer spammer"); + m_STSpammer.makeTable(_datagroup, m_mapCategory, m_setSpammer); + m_pSInitializer->insertLog("Make spammer body tables"); + m_SBodySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); + m_pSInitializer->insertLog("Make spammer reply tables"); + m_SReplySpammerMap.makeTable(_datagroup, m_mapCategory, m_setSpammer); + m_pSInitializer->insertLog("Make sstatsjson table"); + m_SStatsJson.makeTable(_datagroup, m_mapCategory); + } - return true; + return true; } void SSpammer::STSpammer::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory, QSet &setSpammer) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapScore; - const stReal& streal = iterPos.value(); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","; - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; - } - mapScore[strKey].body++; - mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - } + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapScore; + const stReal& streal = iterPos.value(); + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","; + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; + } + mapScore[strKey].body++; + mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","; - strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; - } - mapScore[strKey].reply++; - mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","; + strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; + } + mapScore[strKey].reply++; + mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + } - QList listSpammer; + QList listSpammer; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - stSpammer stspammer; - stspammer.bodycount = iterPos1->body; - stspammer.replycount = iterPos1->reply; - stspammer.nicknamecount = iterPos1->nickname.size() - 1; - stspammer.id_num = iterPos1->id_num; - stspammer.id_id = iterPos1.key().split(",").at(0); - stspammer.category_num = iterPos.key(); - stspammer.platformname_name = iterPos1.key().split(",").at(1); - stspammer.platformname_num = m_pSInitializer->getPlatformName(stspammer.platformname_name); - if (stspammer.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || - stspammer.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_CUT] || - iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) - { + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + stSpammer stspammer; + stspammer.bodycount = iterPos1->body; + stspammer.replycount = iterPos1->reply; + stspammer.nicknamecount = iterPos1->nickname.size() - 1; + stspammer.id_num = iterPos1->id_num; + stspammer.id_id = iterPos1.key().split(",").at(0); + stspammer.category_num = iterPos.key(); + stspammer.platformname_name = iterPos1.key().split(",").at(1); + stspammer.platformname_num = m_pSInitializer->getPlatformName(stspammer.platformname_name); + if (stspammer.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || + stspammer.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_CUT] || + iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) + { - stspammer.spammervalue = stspammer.bodycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] - + stspammer.replycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] - + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; - listSpammer.push_back(stspammer); - } - } - qSort(listSpammer.begin(), listSpammer.end(), isGreaterSpammerValue()); + stspammer.spammervalue = stspammer.bodycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] + + stspammer.replycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] + + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; + listSpammer.push_back(stspammer); + } + } + qSort(listSpammer.begin(), listSpammer.end(), isGreaterSpammerValue()); - int i = 1; + int i = 1; - for (QList::iterator iterPos1 = listSpammer.begin(); iterPos1 != listSpammer.end(); iterPos1++) - { - iterPos1->rank = i++; - setSpammer.insert(iterPos1->id_num); - m_listMap.push_back(*iterPos1); + for (QList::iterator iterPos1 = listSpammer.begin(); iterPos1 != listSpammer.end(); iterPos1++) + { + iterPos1->rank = i++; + setSpammer.insert(iterPos1->id_num); + m_listMap.push_back(*iterPos1); - } - } + } + } } -/* -bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany) -{ - //_db.transaction(); - QString strQuery = "delete from spammer where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - //_db.commit(); - //_db.transaction(); - strQuery = "insert into spammer (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num) VALUES (" - ":rank,:id_num,:id_id,:nicknamecount,:bodycount,:replycount,:spammervalue,:company_num)"; - - - query.clear(); - query.prepare(strQuery.toUtf8()); - - foreach (const stSpammer& stspammer, m_listMap) - { - query.bindValue(":rank", stspammer.rank); - query.bindValue(":id_num", stspammer.id_num); - query.bindValue(":id_id", stspammer.id_id); - query.bindValue(":nicknamecount", stspammer.nicknamecount); - query.bindValue(":bodycount", stspammer.bodycount); - query.bindValue(":replycount", stspammer.replycount); - query.bindValue(":spammervalue", QString::number(stspammer.spammervalue, 'g', 3)); - query.bindValue(":company_num", _nCompany); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - //_db.commit(); - - - strQuery = "update dbinfo set spammercount = " + QString::number(m_listMap.size()) + " where company_num = " - + QString::number(_nCompany); - query.exec(strQuery); - - - return true; -} -*/ - - bool SSpammer::STSpammer::uploadData(QSqlDatabase &_db, const int &_nCompany) { - //_db.transaction(); - QString strQuery = "delete from spammer_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - //_db.commit(); - //_db.transaction(); - strQuery = "insert into spammer_" + QString::number(_nCompany) + "_update (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,category_num,platformname_name,platformname_num) VALUES ("; + //_db.transaction(); + QString strQuery = "delete from spammer_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + //_db.commit(); + //_db.transaction(); + strQuery = "insert into spammer_" + QString::number(_nCompany) + "_update (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,category_num,platformname_name,platformname_num) VALUES ("; - query.clear(); + query.clear(); - foreach (const stSpammer& stspammer, m_listMap) - { - QString str = strQuery; - str += QString::number(stspammer.rank) + ","; - str += QString::number(stspammer.id_num) + ","; - str += "'" + sqlString(stspammer.id_id) + "',"; - str += QString::number(stspammer.nicknamecount) + ","; - str += QString::number(stspammer.bodycount) + ","; - str += QString::number(stspammer.replycount) + ","; - str += QString::number(stspammer.spammervalue, 'g', 3) + ","; - str += QString::number(stspammer.category_num) + ","; - str += "'" + sqlString(stspammer.platformname_name) + "',"; - str += QString::number(stspammer.platformname_num) + ")"; + foreach (const stSpammer& stspammer, m_listMap) + { + QString str = strQuery; + str += QString::number(stspammer.rank) + ","; + str += QString::number(stspammer.id_num) + ","; + str += "'" + sqlString(stspammer.id_id) + "',"; + str += QString::number(stspammer.nicknamecount) + ","; + str += QString::number(stspammer.bodycount) + ","; + str += QString::number(stspammer.replycount) + ","; + str += QString::number(stspammer.spammervalue, 'g', 3) + ","; + str += QString::number(stspammer.category_num) + ","; + str += "'" + sqlString(stspammer.platformname_name) + "',"; + str += QString::number(stspammer.platformname_num) + ")"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - //_db.commit(); + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + //_db.commit(); - strQuery = "update dbinfo set spammercount = " + QString::number(m_listMap.size()) + " where company_num = " - + QString::number(_nCompany); - query.exec(strQuery); + strQuery = "update dbinfo set spammercount = " + QString::number(m_listMap.size()) + " where company_num = " + + QString::number(_nCompany); + query.exec(strQuery); - return true; + return true; } bool SSpammer::STSpammer::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "spammer_" + QString::number(_nCompany) + " TO " + "spammer_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "spammer_" + QString::number(_nCompany) + "_update" + " TO " + "spammer_" + QString::number(_nCompany) + ","; - strQuery += "spammer_" + QString::number(_nCompany) + "_temp" + " TO " + "spammer_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("spammer_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("spammer_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "spammer_" + QString::number(_nCompany) + " TO " + "spammer_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "spammer_" + QString::number(_nCompany) + "_update" + " TO " + "spammer_" + QString::number(_nCompany) + ","; + strQuery += "spammer_" + QString::number(_nCompany) + "_temp" + " TO " + "spammer_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("spammer_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("spammer_" + QString::number(_nCompany) + " rename table end"); + return true; } @@ -404,1002 +341,1002 @@ m_pSInitializer->insertLog("spammer_" + QString::number(_nCompany) + " rename ta void SSpammer::SStatsSpaSpammerRank::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapScore; - const stReal& streal = iterPos.value(); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; - } - mapScore[strKey].body++; - mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - } + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapScore; + const stReal& streal = iterPos.value(); + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; + } + mapScore[strKey].body++; + mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstBody(iterPos1.key())->id_num; - } - mapScore[strKey].reply++; - mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstBody(iterPos1.key())->id_num; + } + mapScore[strKey].reply++; + mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + } - QList listSpammer; + QList listSpammer; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - stStatsSpaSpammerRank ststats; - ststats.bodycount = iterPos1->body; - ststats.replycount = iterPos1->reply; - ststats.id_num = iterPos1->id_num; - ststats.nicknamecount = iterPos1->nickname.size() - 1; - ststats.id_id = iterPos1.key().split(",").at(0); - ststats.platformname_name = iterPos1.key().split(",").at(1); - ststats.subject = "spammervalue"; - if (ststats.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || - ststats.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || - iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) - { + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + stStatsSpaSpammerRank ststats; + ststats.bodycount = iterPos1->body; + ststats.replycount = iterPos1->reply; + ststats.id_num = iterPos1->id_num; + ststats.nicknamecount = iterPos1->nickname.size() - 1; + ststats.id_id = iterPos1.key().split(",").at(0); + ststats.platformname_name = iterPos1.key().split(",").at(1); + ststats.subject = "spammervalue"; + if (ststats.bodycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || + ststats.replycount > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || + iterPos1->nickname.size() > m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) + { - ststats.spammervalue = ststats.bodycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] - + ststats.replycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] - + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; - listSpammer.push_back(ststats); - } - } + ststats.spammervalue = ststats.bodycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] + + ststats.replycount * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] + + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; + listSpammer.push_back(ststats); + } + } - qSort(listSpammer.begin(), listSpammer.end(), isGreaterSpammerValue()); - QMap mapRank; + qSort(listSpammer.begin(), listSpammer.end(), isGreaterSpammerValue()); + QMap mapRank; - for (QList::iterator iterPos1 = listSpammer.begin(); iterPos1 != listSpammer.end(); iterPos1++) - { - if (!mapRank.contains(iterPos1->platformname_name)) - mapRank.insert(iterPos1->platformname_name, 1); + for (QList::iterator iterPos1 = listSpammer.begin(); iterPos1 != listSpammer.end(); iterPos1++) + { + if (!mapRank.contains(iterPos1->platformname_name)) + mapRank.insert(iterPos1->platformname_name, 1); - if (mapRank[iterPos1->platformname_name] <= 10) - { - iterPos1->rank = mapRank[iterPos1->platformname_name]++; - m_listMap.push_back(*iterPos1); - } - } - } + if (mapRank[iterPos1->platformname_name] <= 10) + { + iterPos1->rank = mapRank[iterPos1->platformname_name]++; + m_listMap.push_back(*iterPos1); + } + } + } } /* bool SSpammer::SStatsSpaSpammerRank::uploadData(QSqlDatabase &_db, const int &_nCompany) { - //_db.transaction(); - QString strQuery = "delete from stats_spa_spammer_rank where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - //_db.commit(); - //_db.transaction(); - strQuery = "insert into stats_spa_spammer_rank (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num,platformname_name,subject) VALUES (" - ":rank,:id_num,:id_id,:nicknamecount,:bodycount,:replycount,:spammervalue,:company_num,:platformname_name,:subject)"; + //_db.transaction(); + QString strQuery = "delete from stats_spa_spammer_rank where company_num = " + QString::number(_nCompany); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + //_db.commit(); + //_db.transaction(); + strQuery = "insert into stats_spa_spammer_rank (rank,id_num,id_id,nicknamecount,bodycount,replycount,spammervalue,company_num,platformname_name,subject) VALUES (" + ":rank,:id_num,:id_id,:nicknamecount,:bodycount,:replycount,:spammervalue,:company_num,:platformname_name,:subject)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stStatsSpaSpammerRank& ststats, m_listMap) - { - query.bindValue(":rank", ststats.rank); - query.bindValue(":id_num", ststats.id_num); - query.bindValue(":id_id", ststats.id_id); - query.bindValue(":nicknamecount", ststats.nicknamecount); - query.bindValue(":bodycount", ststats.bodycount); - query.bindValue(":replycount", ststats.replycount); - query.bindValue(":spammervalue", QString::number(ststats.spammervalue, 'g', 3)); - query.bindValue(":company_num", _nCompany); - query.bindValue(":platformname_name", ststats.platformname_name); - query.bindValue(":subject", ststats.subject); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - //_db.commit(); - return true; + foreach (const stStatsSpaSpammerRank& ststats, m_listMap) + { + query.bindValue(":rank", ststats.rank); + query.bindValue(":id_num", ststats.id_num); + query.bindValue(":id_id", ststats.id_id); + query.bindValue(":nicknamecount", ststats.nicknamecount); + query.bindValue(":bodycount", ststats.bodycount); + query.bindValue(":replycount", ststats.replycount); + query.bindValue(":spammervalue", QString::number(ststats.spammervalue, 'g', 3)); + query.bindValue(":company_num", _nCompany); + query.bindValue(":platformname_name", ststats.platformname_name); + query.bindValue(":subject", ststats.subject); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + //_db.commit(); + return true; } */ bool SSpammer::SStatsSpaSpammerRank::uploadData(QSqlDatabase &_db, const int &_nCompany) { - //_db.transaction(); - QString strQuery = "delete from stats_spa_spammer_rank where company_num = " + QString::number(_nCompany); - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - //_db.commit(); - //_db.transaction(); - strQuery = "insert into stats_spa_spammer_rank (rank,id_num,id_id,nicknamecount,bodycount,replycount," - "spammervalue,company_num,platformname_name,subject) VALUES ("; - query.clear(); + //_db.transaction(); + QString strQuery = "delete from stats_spa_spammer_rank where company_num = " + QString::number(_nCompany); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + //_db.commit(); + //_db.transaction(); + strQuery = "insert into stats_spa_spammer_rank (rank,id_num,id_id,nicknamecount,bodycount,replycount," + "spammervalue,company_num,platformname_name,subject) VALUES ("; + query.clear(); - foreach (const stStatsSpaSpammerRank& ststats, m_listMap) - { - QString str = strQuery; - str += QString::number(ststats.rank) + ","; - str += QString::number(ststats.id_num) + ","; - str += "'" + sqlString(ststats.id_id) + "',"; - str += QString::number(ststats.nicknamecount) + ","; - str += QString::number(ststats.bodycount) + ","; - str += QString::number(ststats.replycount) + ","; - str += QString::number(ststats.spammervalue, 'g', 3) + ","; - str += QString::number(_nCompany) + ","; - str += "'" + sqlString(ststats.platformname_name) + "',"; - str += "'" + ststats.subject + "')"; + foreach (const stStatsSpaSpammerRank& ststats, m_listMap) + { + QString str = strQuery; + str += QString::number(ststats.rank) + ","; + str += QString::number(ststats.id_num) + ","; + str += "'" + sqlString(ststats.id_id) + "',"; + str += QString::number(ststats.nicknamecount) + ","; + str += QString::number(ststats.bodycount) + ","; + str += QString::number(ststats.replycount) + ","; + str += QString::number(ststats.spammervalue, 'g', 3) + ","; + str += QString::number(_nCompany) + ","; + str += "'" + sqlString(ststats.platformname_name) + "',"; + str += "'" + ststats.subject + "')"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - //_db.commit(); - return true; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + //_db.commit(); + return true; } void SSpammer::SBodySpammerMap::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory, QSet& setSpammer) { - int num = 1; - const QStringList* orderedUrl = _datagroup.getOrderedUrl(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - const stReal& streal = iterPos.value(); - foreach (const QString& strUrl, *orderedUrl) - { - if (streal.m_setRealBodyUrl.contains(strUrl)) - { - if (!setSpammer.contains(_datagroup.getstBody(strUrl)->id_num)) - continue; + int num = 1; + const QStringList* orderedUrl = _datagroup.getOrderedUrl(); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + const stReal& streal = iterPos.value(); + foreach (const QString& strUrl, *orderedUrl) + { + if (streal.m_setRealBodyUrl.contains(strUrl)) + { + if (!setSpammer.contains(_datagroup.getstBody(strUrl)->id_num)) + continue; - stBodySpammerMap stbody; - stbody.num = num++; - stbody.body_num = _datagroup.getstBodyNum(strUrl); - stbody.id_num = _datagroup.getstBody(strUrl)->id_num; - stbody.category_num = iterPos.key(); - stbody.realin |= REAL_BODY; - stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; - stbody.date = _datagroup.getstBody(strUrl)->date; - if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) - { - stbody.realin |= REAL_REPLY; + stBodySpammerMap stbody; + stbody.num = num++; + stbody.body_num = _datagroup.getstBodyNum(strUrl); + stbody.id_num = _datagroup.getstBody(strUrl)->id_num; + stbody.category_num = iterPos.key(); + stbody.realin |= REAL_BODY; + stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; + stbody.date = _datagroup.getstBody(strUrl)->date; + if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) + { + stbody.realin |= REAL_REPLY; - foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) - { - _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); - } + foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) + { + _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); + } - } - m_listMap.append(stbody); - _datagroup.addRealBodyCategory(strUrl, iterPos.key()); - } + } + m_listMap.append(stbody); + _datagroup.addRealBodyCategory(strUrl, iterPos.key()); + } - else if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) - { - stBodySpammerMap stbody; - stbody.num = num++; - stbody.body_num = _datagroup.getstBodyNum(strUrl); - stbody.category_num = iterPos.key(); - stbody.id_num = _datagroup.getstBody(strUrl)->id_num; - stbody.realin |= REAL_REPLY; - stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; - stbody.date = _datagroup.getstBody(strUrl)->date; + else if (streal.m_mapRealReplyUniqueUrl.contains(strUrl)) + { + stBodySpammerMap stbody; + stbody.num = num++; + stbody.body_num = _datagroup.getstBodyNum(strUrl); + stbody.category_num = iterPos.key(); + stbody.id_num = _datagroup.getstBody(strUrl)->id_num; + stbody.realin |= REAL_REPLY; + stbody.platformname_num = _datagroup.getstBody(strUrl)->platformname_num; + stbody.date = _datagroup.getstBody(strUrl)->date; - foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) - { - _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); - } - m_listMap.append(stbody); - } + foreach (int order, streal.m_mapRealReplyUniqueUrl.values(strUrl)) + { + _datagroup.addRealReplyCategory(strUrl, order, iterPos.key()); + } + m_listMap.append(stbody); + } - } - } + } + } } /* bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate body_spammer_map_" + QString::number(_nCompany) + "_update"; + QString strQuery = "truncate body_spammer_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin)" - " values (:num,:category_num,:id_num,:body_num,:realin)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin)" + " values (:num,:category_num,:id_num,:body_num,:realin)"; + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stBodySpammerMap& stmap, m_listMap) - { - query.bindValue(":num", stmap.num); - query.bindValue(":category_num", stmap.category_num); - query.bindValue(":id_num", stmap.id_num); - query.bindValue(":body_num", stmap.body_num); - query.bindValue(":realin", stmap.realin); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stBodySpammerMap& stmap, m_listMap) + { + query.bindValue(":num", stmap.num); + query.bindValue(":category_num", stmap.category_num); + query.bindValue(":id_num", stmap.id_num); + query.bindValue(":body_num", stmap.body_num); + query.bindValue(":realin", stmap.realin); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } */ bool SSpammer::SBodySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate body_spammer_map_" + QString::number(_nCompany) + "_update"; + QString strQuery = "truncate body_spammer_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,date,platformname_num)" - " values ("; - query.clear(); + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into body_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,realin,date,platformname_num)" + " values ("; + query.clear(); - foreach (const stBodySpammerMap& stmap, m_listMap) - { - QString str = strQuery; - str += QString::number(stmap.num) + ","; - str += QString::number(stmap.category_num) + ","; - str += QString::number(stmap.id_num) + ","; - str += QString::number(stmap.body_num) + ","; - str += QString::number(stmap.realin) + ","; - str += "'" + sqlString(stmap.date) + "',"; - str += QString::number(stmap.platformname_num) + ")"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stBodySpammerMap& stmap, m_listMap) + { + QString str = strQuery; + str += QString::number(stmap.num) + ","; + str += QString::number(stmap.category_num) + ","; + str += QString::number(stmap.id_num) + ","; + str += QString::number(stmap.body_num) + ","; + str += QString::number(stmap.realin) + ","; + str += "'" + sqlString(stmap.date) + "',"; + str += QString::number(stmap.platformname_num) + ")"; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } void SSpammer::SReplySpammerMap::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory, QSet& setSpammer) { - int num = 1; - //const QStringList* orderedUrl = _datagroup.getOrderedUrl(); - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - const stReal& streal = iterPos.value(); - //foreach (const QString& strUrl, *orderedUrl) - { - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - if (!setSpammer.contains(_datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num)) - continue; + int num = 1; + //const QStringList* orderedUrl = _datagroup.getOrderedUrl(); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + const stReal& streal = iterPos.value(); + //foreach (const QString& strUrl, *orderedUrl) + { + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + if (!setSpammer.contains(_datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num)) + continue; - stReplySpammerMap streply; - streply.num = num++; - streply.category_num = iterPos.key(); - streply.body_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->body_num; - streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; - streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; - streply.body_date = _datagroup.getstBody(iterPos1.key())->date; - m_listMap.append(streply); + stReplySpammerMap streply; + streply.num = num++; + streply.category_num = iterPos.key(); + streply.body_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->body_num; + streply.id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; + streply.reply_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->num; + streply.body_date = _datagroup.getstBody(iterPos1.key())->date; + m_listMap.append(streply); - _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key()); + _datagroup.addRealReplyCategory(iterPos1.key(), iterPos1.value(), iterPos.key()); - } + } - /* - if (streal.m_setRealAllUrl.contains(strUrl)) - { - if (_datagroup.getstBody(strUrl)->reply_count == 0) - continue; + /* + if (streal.m_setRealAllUrl.contains(strUrl)) + { + if (_datagroup.getstBody(strUrl)->reply_count == 0) + continue; - const QMap* mapReply = _datagroup.getstReply(strUrl); + const QMap* mapReply = _datagroup.getstReply(strUrl); - for(QMap::const_iterator iterPos1 = mapReply->constBegin(); iterPos1 != mapReply->constEnd(); iterPos1++) - { - stReplySpammerMap streply; - streply.num = num++; - streply.category_num = iterPos.key(); - streply.body_num = iterPos1.value().body_num; - streply.id_num = iterPos1.value().id_num; - streply.reply_num = iterPos1.value().num; - m_listMap.append(streply); - } - } - */ - } - } + for(QMap::const_iterator iterPos1 = mapReply->constBegin(); iterPos1 != mapReply->constEnd(); iterPos1++) + { + stReplySpammerMap streply; + streply.num = num++; + streply.category_num = iterPos.key(); + streply.body_num = iterPos1.value().body_num; + streply.id_num = iterPos1.value().id_num; + streply.reply_num = iterPos1.value().num; + m_listMap.append(streply); + } + } + */ + } + } } /* bool SSpammer::SReplySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate reply_spammer_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num)" - " values (:num,:category_num,:id_num,:body_num,:reply_num)"; - query.clear(); - query.prepare(strQuery.toUtf8()); + QString strQuery = "truncate reply_spammer_map_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num)" + " values (:num,:category_num,:id_num,:body_num,:reply_num)"; + query.clear(); + query.prepare(strQuery.toUtf8()); - foreach (const stReplySpammerMap& stmap, m_listMap) - { - query.bindValue(":num", stmap.num); - query.bindValue(":category_num", stmap.category_num); - query.bindValue(":id_num", stmap.id_num); - query.bindValue(":body_num", stmap.body_num); - //query.bindValue(":realin", stmap.realin); - query.bindValue(":reply_num", stmap.reply_num); - if (query.exec() == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stReplySpammerMap& stmap, m_listMap) + { + query.bindValue(":num", stmap.num); + query.bindValue(":category_num", stmap.category_num); + query.bindValue(":id_num", stmap.id_num); + query.bindValue(":body_num", stmap.body_num); + //query.bindValue(":realin", stmap.realin); + query.bindValue(":reply_num", stmap.reply_num); + if (query.exec() == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } */ bool SSpammer::SReplySpammerMap::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery = "truncate reply_spammer_map_" + QString::number(_nCompany) + "_update"; - QSqlQuery query(_db); - if (query.exec(strQuery.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num,body_date)" - " values ("; - query.clear(); + QString strQuery = "truncate reply_spammer_map_" + QString::number(_nCompany) + "_update"; + QSqlQuery query(_db); + if (query.exec(strQuery.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + strQuery = "insert into reply_spammer_map_" + QString::number(_nCompany) + "_update (num,category_num,id_num,body_num,reply_num,body_date)" + " values ("; + query.clear(); - foreach (const stReplySpammerMap& stmap, m_listMap) - { - QString str = strQuery; - str += QString::number(stmap.num) + ","; - str += QString::number(stmap.category_num) + ","; - str += QString::number(stmap.id_num) + ","; - str += QString::number(stmap.body_num) + ","; - str += QString::number(stmap.reply_num) + ","; - str += "'" + sqlString(stmap.body_date) + "')"; - if (query.exec(str.toUtf8()) == false) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + foreach (const stReplySpammerMap& stmap, m_listMap) + { + QString str = strQuery; + str += QString::number(stmap.num) + ","; + str += QString::number(stmap.category_num) + ","; + str += QString::number(stmap.id_num) + ","; + str += QString::number(stmap.body_num) + ","; + str += QString::number(stmap.reply_num) + ","; + str += "'" + sqlString(stmap.body_date) + "')"; + if (query.exec(str.toUtf8()) == false) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } bool SSpammer::SBodySpammerMap::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "body_spammer_map_" + QString::number(_nCompany) + " TO " + "body_spammer_map_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "body_spammer_map_" + QString::number(_nCompany) + "_update" + " TO " + "body_spammer_map_" + QString::number(_nCompany) + ","; - strQuery += "body_spammer_map_" + QString::number(_nCompany) + "_temp" + " TO " + "body_spammer_map_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("body_spammer_map_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("body_spammer_map_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "body_spammer_map_" + QString::number(_nCompany) + " TO " + "body_spammer_map_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "body_spammer_map_" + QString::number(_nCompany) + "_update" + " TO " + "body_spammer_map_" + QString::number(_nCompany) + ","; + strQuery += "body_spammer_map_" + QString::number(_nCompany) + "_temp" + " TO " + "body_spammer_map_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("body_spammer_map_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("body_spammer_map_" + QString::number(_nCompany) + " rename table end"); + return true; } bool SSpammer::SReplySpammerMap::changeTable(QSqlDatabase &_db, const int &_nCompany) { - QString strQuery; - QSqlQuery query(_db); - strQuery = "RENAME TABLE "; - strQuery += "reply_spammer_map_" + QString::number(_nCompany) + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + "_temp" + ","; - strQuery += "reply_spammer_map_" + QString::number(_nCompany) + "_update" + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + ","; - strQuery += "reply_spammer_map_" + QString::number(_nCompany) + "_temp" + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + "_update"; -m_pSInitializer->insertLog("reply_spammer_map_" + QString::number(_nCompany) + " rename table start"); - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } -m_pSInitializer->insertLog("reply_spammer_map_" + QString::number(_nCompany) + " rename table end"); - return true; + QString strQuery; + QSqlQuery query(_db); + strQuery = "RENAME TABLE "; + strQuery += "reply_spammer_map_" + QString::number(_nCompany) + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + "_temp" + ","; + strQuery += "reply_spammer_map_" + QString::number(_nCompany) + "_update" + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + ","; + strQuery += "reply_spammer_map_" + QString::number(_nCompany) + "_temp" + " TO " + "reply_spammer_map_" + QString::number(_nCompany) + "_update"; + m_pSInitializer->insertLog("reply_spammer_map_" + QString::number(_nCompany) + " rename table start"); + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + m_pSInitializer->insertLog("reply_spammer_map_" + QString::number(_nCompany) + " rename table end"); + return true; } void SSpammer::SStatsJson::makeTableBuzz(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); - QDate dateStart(2100,1,1),dateEnd(2000,1,1); - QDate dateStartBody(2100,1,1),dateEndBody(2000,1,1); - QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1); + QDate dateStart(2100,1,1),dateEnd(2000,1,1); + QDate dateStartBody(2100,1,1),dateEndBody(2000,1,1); + QDate dateStartReply(2100,1,1),dateEndReply(2000,1,1); - QList listBuzzy; - stReal allCategory; - // filtered - { - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - stBuzzy stbuzzy; - stbuzzy.m_nCategory = iterPos.key(); - const stReal &streal = iterPos.value(); - foreach (const QString& strUrl, streal.m_setRealBodyUrl) - { - allCategory.m_setRealBodyUrl.insert(strUrl); - allCategory.m_setRealAllUrl.insert(strUrl); - QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - //if (date.isNull()) - // date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed(), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; - dateStart = (date < dateStart ) ? date : dateStart; - dateEnd = (date > dateEnd ) ? date : dateEnd; - dateStartBody = (date < dateStartBody ) ? date : dateStartBody; - dateEndBody = (date > dateEndBody ) ? date : dateEndBody; + QList listBuzzy; + stReal allCategory; + // filtered + { + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + stBuzzy stbuzzy; + stbuzzy.m_nCategory = iterPos.key(); + const stReal &streal = iterPos.value(); + foreach (const QString& strUrl, streal.m_setRealBodyUrl) + { + allCategory.m_setRealBodyUrl.insert(strUrl); + allCategory.m_setRealAllUrl.insert(strUrl); + QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + //if (date.isNull()) + // date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed(), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; + dateStart = (date < dateStart ) ? date : dateStart; + dateEnd = (date > dateEnd ) ? date : dateEnd; + dateStartBody = (date < dateStartBody ) ? date : dateStartBody; + dateEndBody = (date > dateEndBody ) ? date : dateEndBody; - if (stbuzzy.m_mapBodyBuzz.contains(date)) - stbuzzy.m_mapBodyBuzz[date]++; - else - stbuzzy.m_mapBodyBuzz.insert(date, 1); - } + if (stbuzzy.m_mapBodyBuzz.contains(date)) + stbuzzy.m_mapBodyBuzz[date]++; + else + stbuzzy.m_mapBodyBuzz.insert(date, 1); + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()]; - if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) - allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); - allCategory.m_setRealAllUrl.insert(iterPos1.key()); + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()]; + if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) + allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); + allCategory.m_setRealAllUrl.insert(iterPos1.key()); - QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; - //dateStart = (date < dateStart ) ? date : dateStart; - dateEnd = (date > dateEnd ) ? date : dateEnd; - dateStartReply = (date < dateStartReply ) ? (date < dateStart ? dateStart : date) : dateStartReply; - dateEndReply = (date > dateEndReply ) ? date : dateEndReply; + QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; + //dateStart = (date < dateStart ) ? date : dateStart; + dateEnd = (date > dateEnd ) ? date : dateEnd; + dateStartReply = (date < dateStartReply ) ? (date < dateStart ? dateStart : date) : dateStartReply; + dateEndReply = (date > dateEndReply ) ? date : dateEndReply; - if (stbuzzy.m_mapReplyBuzz.contains(date)) - stbuzzy.m_mapReplyBuzz[date]++; - else - stbuzzy.m_mapReplyBuzz.insert(date, 1); - } + if (stbuzzy.m_mapReplyBuzz.contains(date)) + stbuzzy.m_mapReplyBuzz[date]++; + else + stbuzzy.m_mapReplyBuzz.insert(date, 1); + } - listBuzzy.append(stbuzzy); - } - } - //all filtered category - { - stBuzzy stbuzzy; - stbuzzy.m_nCategory = -1; - foreach (const QString& strUrl, allCategory.m_setRealBodyUrl) - { - QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; + listBuzzy.append(stbuzzy); + } + } + //all filtered category + { + stBuzzy stbuzzy; + stbuzzy.m_nCategory = -1; + foreach (const QString& strUrl, allCategory.m_setRealBodyUrl) + { + QDate date = QDateTime::fromString((*mapBody)[strUrl.trimmed()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; - if (stbuzzy.m_mapBodyBuzz.contains(date)) - stbuzzy.m_mapBodyBuzz[date]++; - else - stbuzzy.m_mapBodyBuzz.insert(date, 1); - } + if (stbuzzy.m_mapBodyBuzz.contains(date)) + stbuzzy.m_mapBodyBuzz[date]++; + else + stbuzzy.m_mapBodyBuzz.insert(date, 1); + } - for (QMap::const_iterator iterPos1 = allCategory.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != allCategory.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()]; - QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; + for (QMap::const_iterator iterPos1 = allCategory.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != allCategory.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + const QStringList &slReply = (*mapReply)[iterPos1.key()][iterPos1.value()]; + QDate date = QDateTime::fromString(slReply[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; - if (stbuzzy.m_mapReplyBuzz.contains(date)) - stbuzzy.m_mapReplyBuzz[date]++; - else - stbuzzy.m_mapReplyBuzz.insert(date, 1); - } - listBuzzy.append(stbuzzy); - } + if (stbuzzy.m_mapReplyBuzz.contains(date)) + stbuzzy.m_mapReplyBuzz[date]++; + else + stbuzzy.m_mapReplyBuzz.insert(date, 1); + } + listBuzzy.append(stbuzzy); + } - //all buzzy - { - stBuzzy stbuzzy; - stbuzzy.m_nCategory = 0; - for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) - { - QDate date = QDateTime::fromString(iterPos.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; + //all buzzy + { + stBuzzy stbuzzy; + stbuzzy.m_nCategory = 0; + for (QMap::const_iterator iterPos = mapBody->constBegin(); iterPos != mapBody->constEnd(); iterPos++) + { + QDate date = QDateTime::fromString(iterPos.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; - if (stbuzzy.m_mapBodyBuzz.contains(date)) - stbuzzy.m_mapBodyBuzz[date]++; - else - stbuzzy.m_mapBodyBuzz.insert(date, 1); - } + if (stbuzzy.m_mapBodyBuzz.contains(date)) + stbuzzy.m_mapBodyBuzz[date]++; + else + stbuzzy.m_mapBodyBuzz.insert(date, 1); + } - for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) - { - for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) - { - QDate date = QDateTime::fromString(iterPos1.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); - if (date.year() == 1990) - continue; + for (QMap >::const_iterator iterPos = mapReply->constBegin(); iterPos != mapReply->constEnd(); iterPos++) + { + for (QMap::const_iterator iterPos1 = iterPos.value().constBegin(); iterPos1 != iterPos.value().constEnd(); iterPos1++) + { + QDate date = QDateTime::fromString(iterPos1.value()[anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd HH:mm:ss").date(); + if (date.year() == 1990) + continue; - if (stbuzzy.m_mapReplyBuzz.contains(date)) - stbuzzy.m_mapReplyBuzz[date]++; - else - stbuzzy.m_mapReplyBuzz.insert(date, 1); - } - } - listBuzzy.append(stbuzzy); - } + if (stbuzzy.m_mapReplyBuzz.contains(date)) + stbuzzy.m_mapReplyBuzz[date]++; + else + stbuzzy.m_mapReplyBuzz.insert(date, 1); + } + } + listBuzzy.append(stbuzzy); + } - int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0; + int nTotalCount = 0, nTotalBodyCount = 0, nTotalReplyCount = 0; - { - foreach (const QString& strUrl, allCategory.m_setRealAllUrl) - { - nTotalBodyCount++; - nTotalReplyCount += (*mapReply)[strUrl].size(); - } - nTotalCount = nTotalBodyCount + nTotalReplyCount; - } + { + foreach (const QString& strUrl, allCategory.m_setRealAllUrl) + { + nTotalBodyCount++; + nTotalReplyCount += (*mapReply)[strUrl].size(); + } + nTotalCount = nTotalBodyCount + nTotalReplyCount; + } - { - QJsonArray jsArrayAll; - QJsonArray jsArrayReply; - QJsonArray jsArrayBody; + { + QJsonArray jsArrayAll; + QJsonArray jsArrayReply; + QJsonArray jsArrayBody; - foreach (const stBuzzy &stbuzzy, listBuzzy) - { - QJsonArray jsValueAll; - QJsonArray jsValueBody; - QJsonArray jsValueReply; + foreach (const stBuzzy &stbuzzy, listBuzzy) + { + QJsonArray jsValueAll; + QJsonArray jsValueBody; + QJsonArray jsValueReply; - for (QDate i = dateStart; i <= dateEnd; i = i.addDays(1)) - { - QJsonObject jsoBody; - QJsonObject jsoAll; - QJsonObject jsoReply; + for (QDate i = dateStart; i <= dateEnd; i = i.addDays(1)) + { + QJsonObject jsoBody; + QJsonObject jsoAll; + QJsonObject jsoReply; - jsoAll["date"] = jsoReply["date"] = jsoBody["date"] = i.toString("yyyyMMdd"); - jsoBody["count"] = stbuzzy.m_mapBodyBuzz[i]; - jsoReply["count"] = stbuzzy.m_mapReplyBuzz[i]; - jsoAll["count"] = stbuzzy.m_mapBodyBuzz[i] + stbuzzy.m_mapReplyBuzz[i]; + jsoAll["date"] = jsoReply["date"] = jsoBody["date"] = i.toString("yyyyMMdd"); + jsoBody["count"] = stbuzzy.m_mapBodyBuzz[i]; + jsoReply["count"] = stbuzzy.m_mapReplyBuzz[i]; + jsoAll["count"] = stbuzzy.m_mapBodyBuzz[i] + stbuzzy.m_mapReplyBuzz[i]; - jsValueAll.append(jsoAll); - jsValueBody.append(jsoBody); - jsValueReply.append(jsoReply); - } + jsValueAll.append(jsoAll); + jsValueBody.append(jsoBody); + jsValueReply.append(jsoReply); + } - QJsonObject jsNameReply; - QJsonObject jsNameAll; - QJsonObject jsNameBody; + QJsonObject jsNameReply; + QJsonObject jsNameAll; + QJsonObject jsNameBody; - if (stbuzzy.m_nCategory > 0) - jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory); - else if (stbuzzy.m_nCategory == 0) - jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL"; - else - jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY"; + if (stbuzzy.m_nCategory > 0) + jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = m_pSInitializer->getCategoryName(stbuzzy.m_nCategory); + else if (stbuzzy.m_nCategory == 0) + jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALL"; + else + jsNameReply["name"] = jsNameBody["name"] = jsNameAll["name"] = "ALLCATEGORY"; - jsNameAll["value"] = jsValueAll; - jsNameBody["value"] = jsValueBody; - jsNameReply["value"] = jsValueReply; + jsNameAll["value"] = jsValueAll; + jsNameBody["value"] = jsValueBody; + jsNameReply["value"] = jsValueReply; - jsArrayAll.append(jsNameAll); - jsArrayBody.append(jsNameBody); - jsArrayReply.append(jsNameReply); - } - stStatsJson stbodybuzz; - stStatsJson streplybuzz; - stStatsJson stallbuzz; + jsArrayAll.append(jsNameAll); + jsArrayBody.append(jsNameBody); + jsArrayReply.append(jsNameReply); + } + stStatsJson stbodybuzz; + stStatsJson streplybuzz; + stStatsJson stallbuzz; - stallbuzz.title = streplybuzz.title = stbodybuzz.title = "buzz"; + stallbuzz.title = streplybuzz.title = stbodybuzz.title = "buzz"; - stbodybuzz.subtitle = "body"; - streplybuzz.subtitle = "reply"; - stallbuzz.subtitle = "all"; + stbodybuzz.subtitle = "body"; + streplybuzz.subtitle = "reply"; + stallbuzz.subtitle = "all"; - QJsonObject jobjAll; - QJsonObject jobjBody; - QJsonObject jobjReply; + QJsonObject jobjAll; + QJsonObject jobjBody; + QJsonObject jobjReply; - jobjAll["data"] = jsArrayAll; - jobjBody["data"] = jsArrayBody; - jobjReply["data"] = jsArrayReply; + jobjAll["data"] = jsArrayAll; + jobjBody["data"] = jsArrayBody; + jobjReply["data"] = jsArrayReply; - jobjAll["mindate"] = dateStart.toString("yyyy.MM.dd"); - jobjBody["mindate"] = dateStartBody.toString("yyyy.MM.dd"); - jobjReply["mindate"] = dateStartReply.toString("yyyy.MM.dd"); + jobjAll["mindate"] = dateStart.toString("yyyy.MM.dd"); + jobjBody["mindate"] = dateStartBody.toString("yyyy.MM.dd"); + jobjReply["mindate"] = dateStartReply.toString("yyyy.MM.dd"); - jobjAll["maxdate"] = dateEnd.toString("yyyy.MM.dd"); - jobjBody["maxdate"] = dateEndBody.toString("yyyy.MM.dd"); - jobjReply["maxdate"] = dateEndReply.toString("yyyy.MM.dd"); + jobjAll["maxdate"] = dateEnd.toString("yyyy.MM.dd"); + jobjBody["maxdate"] = dateEndBody.toString("yyyy.MM.dd"); + jobjReply["maxdate"] = dateEndReply.toString("yyyy.MM.dd"); - jobjAll["totalcount"] = nTotalCount; - jobjBody["totalcount"] = nTotalBodyCount; - jobjReply["totalcount"] = nTotalReplyCount; + jobjAll["totalcount"] = nTotalCount; + jobjBody["totalcount"] = nTotalBodyCount; + jobjReply["totalcount"] = nTotalReplyCount; - QJsonDocument jdAll(jobjAll); - QJsonDocument jdBody(jobjBody); - QJsonDocument jdReply(jobjReply); + QJsonDocument jdAll(jobjAll); + QJsonDocument jdBody(jobjBody); + QJsonDocument jdReply(jobjReply); - stbodybuzz.jdata = jdBody.toJson(QJsonDocument::Compact); - streplybuzz.jdata = jdReply.toJson(QJsonDocument::Compact); - stallbuzz.jdata = jdAll.toJson(QJsonDocument::Compact); + stbodybuzz.jdata = jdBody.toJson(QJsonDocument::Compact); + streplybuzz.jdata = jdReply.toJson(QJsonDocument::Compact); + stallbuzz.jdata = jdAll.toJson(QJsonDocument::Compact); - stallbuzz.platformname_num = stbodybuzz.platformname_num = streplybuzz.platformname_num = 1; - m_listMap.append(stbodybuzz); - m_listMap.append(streplybuzz); - m_listMap.append(stallbuzz); - } + stallbuzz.platformname_num = stbodybuzz.platformname_num = streplybuzz.platformname_num = 1; + m_listMap.append(stbodybuzz); + m_listMap.append(streplybuzz); + m_listMap.append(stallbuzz); + } - /* + /* - { - for (QDate i = dateStart; i <= dateEnd; i = i.addDays(1)) - { - //body - stStatsJson stbodybuzz; - stStatsJson streplybuzz; - stStatsJson stallbuzz; - foreach (const stBuzzy& stbuzzy, listBuzzy) - { - if (stbuzzy.m_mapBodyBuzz.contains(i)) - { - stbodybuzz.category[stbuzzy.m_nCategory] = stbuzzy.m_mapBodyBuzz[i]; - stallbuzz.category[stbuzzy.m_nCategory] += stbuzzy.m_mapBodyBuzz[i]; - } + { + for (QDate i = dateStart; i <= dateEnd; i = i.addDays(1)) + { + //body + stStatsJson stbodybuzz; + stStatsJson streplybuzz; + stStatsJson stallbuzz; + foreach (const stBuzzy& stbuzzy, listBuzzy) + { + if (stbuzzy.m_mapBodyBuzz.contains(i)) + { + stbodybuzz.category[stbuzzy.m_nCategory] = stbuzzy.m_mapBodyBuzz[i]; + stallbuzz.category[stbuzzy.m_nCategory] += stbuzzy.m_mapBodyBuzz[i]; + } - if (stbuzzy.m_mapReplyBuzz.contains(i)) - { - streplybuzz.category[stbuzzy.m_nCategory] = stbuzzy.m_mapReplyBuzz[i]; - stallbuzz.category[stbuzzy.m_nCategory] += stbuzzy.m_mapReplyBuzz[i]; - } - } - stallbuzz.date = streplybuzz.date = stbodybuzz.date = i; - stbodybuzz.subtitle = "body"; - streplybuzz.subtitle = "reply"; - stallbuzz.subtitle = "all"; - m_listMap.append(stallbuzz); - m_listMap.append(stbodybuzz); - m_listMap.append(streplybuzz); - } - } - */ + if (stbuzzy.m_mapReplyBuzz.contains(i)) + { + streplybuzz.category[stbuzzy.m_nCategory] = stbuzzy.m_mapReplyBuzz[i]; + stallbuzz.category[stbuzzy.m_nCategory] += stbuzzy.m_mapReplyBuzz[i]; + } + } + stallbuzz.date = streplybuzz.date = stbodybuzz.date = i; + stbodybuzz.subtitle = "body"; + streplybuzz.subtitle = "reply"; + stallbuzz.subtitle = "all"; + m_listMap.append(stallbuzz); + m_listMap.append(stbodybuzz); + m_listMap.append(streplybuzz); + } + } + */ } void SSpammer::SStatsJson::makeTableRank(SDatagroup &_datagroup, const QMap &_mapCategory) { - const QMap* mapBody = _datagroup.getmapBody(); - const QMap >* mapReply = _datagroup.getmapReply(); - const int* anColumn = m_pSInitializer->getColumnIntArray(); + const QMap* mapBody = _datagroup.getmapBody(); + const QMap >* mapReply = _datagroup.getmapReply(); + const int* anColumn = m_pSInitializer->getColumnIntArray(); - stReal allCategory; + stReal allCategory; - for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) - { - QMap mapScore; - const stReal& streal = iterPos.value(); - QDate dateStart(2030, 1, 1); - QDate dateEnd(2000, 1, 1); + for (QMap::const_iterator iterPos = _mapCategory.constBegin(); iterPos != _mapCategory.constEnd(); iterPos++) + { + QMap mapScore; + const stReal& streal = iterPos.value(); + QDate dateStart(2030, 1, 1); + QDate dateEnd(2000, 1, 1); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - allCategory.m_setRealBodyUrl.insert(_url); - allCategory.m_setRealAllUrl.insert(_url); + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + allCategory.m_setRealBodyUrl.insert(_url); + allCategory.m_setRealAllUrl.insert(_url); - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; - } - mapScore[strKey].body++; - mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; + } + mapScore[strKey].body++; + mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - allCategory.m_setRealAllUrl.insert(iterPos1.key()); - if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) - allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); - QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; - } - mapScore[strKey].reply++; - mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + allCategory.m_setRealAllUrl.insert(iterPos1.key()); + if (!allCategory.m_mapRealReplyUniqueUrl.contains(iterPos1.key()) || !allCategory.m_mapRealReplyUniqueUrl.values(iterPos1.key()).contains(iterPos1.value())) + allCategory.m_mapRealReplyUniqueUrl.insertMulti(iterPos1.key(), iterPos1.value()); + QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; + } + mapScore[strKey].reply++; + mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - //QList listSpammer; - QMap mapSpammer; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - if (iterPos1->body >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || - iterPos1->reply >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || - iterPos1->nickname.size() >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) - { - double value = iterPos1->body * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] - + iterPos1->reply * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] - + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; - stSpammerRank rank; - rank.value = value; - rank.id = iterPos1.key().split(",").at(0); - rank.platformform_num = m_pSInitializer->getPlatformName(iterPos1.key().split(",").at(1)); - rank.id_num = iterPos1.value().id_num; - mapSpammer.insertMulti(rank.platformform_num, rank); - } - } + //QList listSpammer; + QMap mapSpammer; + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + if (iterPos1->body >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || + iterPos1->reply >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || + iterPos1->nickname.size() >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) + { + double value = iterPos1->body * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] + + iterPos1->reply * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] + + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; + stSpammerRank rank; + rank.value = value; + rank.id = iterPos1.key().split(",").at(0); + rank.platformform_num = m_pSInitializer->getPlatformName(iterPos1.key().split(",").at(1)); + rank.id_num = iterPos1.value().id_num; + mapSpammer.insertMulti(rank.platformform_num, rank); + } + } - QList keys = mapSpammer.keys().toSet().toList(); + QList keys = mapSpammer.keys().toSet().toList(); - QJsonArray jsonArray; - stStatsJson stjsonRank; - { - stjsonRank.category_num = iterPos.key(); - stjsonRank.servicenum = 3; - stjsonRank.title = "rank"; - stjsonRank.subtitle = ""; - stjsonRank.platformname_num = 1; - } - int nTotalCount = 0; + QJsonArray jsonArray; + stStatsJson stjsonRank; + { + stjsonRank.category_num = iterPos.key(); + stjsonRank.servicenum = 3; + stjsonRank.title = "rank"; + stjsonRank.subtitle = ""; + stjsonRank.platformname_num = 1; + } + int nTotalCount = 0; - for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) - { - QList values = mapSpammer.values(*iterPos1); - qSort(values.begin(), values.end(), isGreaterSpammerValue()); - int nRankLimit = (values.size() <= 10) ? values.size() : 10; - QJsonObject jsonObj; - jsonObj["platformname_num"] = *iterPos1; - QJsonArray jsonSubArray; - for (int i = 0; i < nRankLimit; i++) - { - QJsonObject jsonSubObj; - jsonSubObj["rank"] = i + 1; - jsonSubObj["value"] = values.at(i).value; - jsonSubObj["id"] = values.at(i).id; - jsonSubObj["id_num"] = values.at(i).id_num; - jsonSubArray.append(jsonSubObj); - } - jsonObj["data"] = jsonSubArray; - jsonArray.append(jsonObj); + for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) + { + QList values = mapSpammer.values(*iterPos1); + qSort(values.begin(), values.end(), isGreaterSpammerValue()); + int nRankLimit = (values.size() <= 10) ? values.size() : 10; + QJsonObject jsonObj; + jsonObj["platformname_num"] = *iterPos1; + QJsonArray jsonSubArray; + for (int i = 0; i < nRankLimit; i++) + { + QJsonObject jsonSubObj; + jsonSubObj["rank"] = i + 1; + jsonSubObj["value"] = values.at(i).value; + jsonSubObj["id"] = values.at(i).id; + jsonSubObj["id_num"] = values.at(i).id_num; + jsonSubArray.append(jsonSubObj); + } + jsonObj["data"] = jsonSubArray; + jsonArray.append(jsonObj); - nTotalCount += values.size(); - } - QJsonObject jObj; - jObj["data"] = jsonArray; - jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); - jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); - jObj["totalcount"] = nTotalCount; - QJsonDocument jsonDoc(jObj); - stjsonRank.jdata = jsonDoc.toJson(); - m_listMap.append(stjsonRank); - } + nTotalCount += values.size(); + } + QJsonObject jObj; + jObj["data"] = jsonArray; + jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); + jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); + jObj["totalcount"] = nTotalCount; + QJsonDocument jsonDoc(jObj); + stjsonRank.jdata = jsonDoc.toJson(); + m_listMap.append(stjsonRank); + } - //all filtered Category - { - QMap mapScore; - const stReal& streal = allCategory; - QDate dateStart(2030, 1, 1); - QDate dateEnd(2000, 1, 1); + //all filtered Category + { + QMap mapScore; + const stReal& streal = allCategory; + QDate dateStart(2030, 1, 1); + QDate dateEnd(2000, 1, 1); - foreach (const QString& _url, streal.m_setRealBodyUrl) - { - QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; - } - mapScore[strKey].body++; - mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + foreach (const QString& _url, streal.m_setRealBodyUrl) + { + QString strKey = (*mapBody)[_url][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapBody)[_url][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstBody(_url)->id_num; + } + mapScore[strKey].body++; + mapScore[strKey].nickname.insert((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + QDate dateThis = QDateTime::fromString((*mapBody)[_url][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) - { - QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; - strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); - strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); - if (!mapScore.contains(strKey)) - { - mapScore.insert(strKey, stSpammerScore()); - mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; - } - mapScore[strKey].reply++; - mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); - QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); - if (dateThis.isValid() && dateThis.year() > 1990) - { - dateStart = (dateStart < dateThis) ? dateStart : dateThis; - dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; - } - } + for (QMap::const_iterator iterPos1 = streal.m_mapRealReplyUniqueUrl.constBegin(); iterPos1 != streal.m_mapRealReplyUniqueUrl.constEnd(); iterPos1++) + { + QString strKey = (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_id]].trimmed() + ","; + strKey += ((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_name]].trimmed() + ","); + strKey += (*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_platform_form]].trimmed(); + if (!mapScore.contains(strKey)) + { + mapScore.insert(strKey, stSpammerScore()); + mapScore[strKey].id_num = _datagroup.getstReply(iterPos1.key(), iterPos1.value())->id_num; + } + mapScore[strKey].reply++; + mapScore[strKey].nickname.insert((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_nickname]].trimmed()); + QDate dateThis = QDateTime::fromString((*mapReply)[iterPos1.key()][iterPos1.value()][anColumn[SInitializer::E_DATA_article_date]].trimmed().replace("T", " "), "yyyy-MM-dd hh:mm:ss").date(); + if (dateThis.isValid() && dateThis.year() > 1990) + { + dateStart = (dateStart < dateThis) ? dateStart : dateThis; + dateEnd = (dateEnd > dateThis) ? dateEnd : dateThis; + } + } - //QList listSpammer; - QMap mapSpammer; - for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) - { - if (iterPos1->body >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || - iterPos1->reply >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || - iterPos1->nickname.size() >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) - { - double value = iterPos1->body * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] - + iterPos1->reply * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] - + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; - stSpammerRank rank; - rank.value = value; - rank.id = iterPos1.key().split(",").at(0); - rank.platformform_num = m_pSInitializer->getPlatformName(iterPos1.key().split(",").at(1)); - rank.id_num = iterPos1.value().id_num; - mapSpammer.insertMulti(rank.platformform_num, rank); - } - } + //QList listSpammer; + QMap mapSpammer; + for (QMap::iterator iterPos1 = mapScore.begin(); iterPos1 != mapScore.end(); iterPos1++) + { + if (iterPos1->body >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_CUT] || + iterPos1->reply >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT] || + iterPos1->nickname.size() >= m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_CUT]) + { + double value = iterPos1->body * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_BODY_COUNT_RATIO] + + iterPos1->reply * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_REPLY_COUNT_RATIO] + + iterPos1->nickname.size() * m_pSInitializer->getSpammerParam()[SInitializer::E_SPAMER_NICK_COUNT_RATIO]; + stSpammerRank rank; + rank.value = value; + rank.id = iterPos1.key().split(",").at(0); + rank.platformform_num = m_pSInitializer->getPlatformName(iterPos1.key().split(",").at(1)); + rank.id_num = iterPos1.value().id_num; + mapSpammer.insertMulti(rank.platformform_num, rank); + } + } - QList keys = mapSpammer.keys().toSet().toList(); + QList keys = mapSpammer.keys().toSet().toList(); - QJsonArray jsonArray; - stStatsJson stjsonRank; - { - stjsonRank.category_num = -1; - stjsonRank.servicenum = 3; - stjsonRank.title = "rank"; - stjsonRank.subtitle = ""; - stjsonRank.platformname_num = 1; - } - int nTotalCount = 0; + QJsonArray jsonArray; + stStatsJson stjsonRank; + { + stjsonRank.category_num = -1; + stjsonRank.servicenum = 3; + stjsonRank.title = "rank"; + stjsonRank.subtitle = ""; + stjsonRank.platformname_num = 1; + } + int nTotalCount = 0; - for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) - { - QList values = mapSpammer.values(*iterPos1); - qSort(values.begin(), values.end(), isGreaterSpammerValue()); - int nRankLimit = (values.size() <= 10) ? values.size() : 10; - QJsonObject jsonObj; - jsonObj["platformname_num"] = *iterPos1; - QJsonArray jsonSubArray; - for (int i = 0; i < nRankLimit; i++) - { - QJsonObject jsonSubObj; - jsonSubObj["rank"] = i + 1; - jsonSubObj["value"] = values.at(i).value; - jsonSubObj["id"] = values.at(i).id; - jsonSubObj["id_num"] = values.at(i).id_num; - jsonSubArray.append(jsonSubObj); - } - jsonObj["data"] = jsonSubArray; - jsonArray.append(jsonObj); + for (QList::iterator iterPos1 = keys.begin(); iterPos1 != keys.end(); iterPos1++) + { + QList values = mapSpammer.values(*iterPos1); + qSort(values.begin(), values.end(), isGreaterSpammerValue()); + int nRankLimit = (values.size() <= 10) ? values.size() : 10; + QJsonObject jsonObj; + jsonObj["platformname_num"] = *iterPos1; + QJsonArray jsonSubArray; + for (int i = 0; i < nRankLimit; i++) + { + QJsonObject jsonSubObj; + jsonSubObj["rank"] = i + 1; + jsonSubObj["value"] = values.at(i).value; + jsonSubObj["id"] = values.at(i).id; + jsonSubObj["id_num"] = values.at(i).id_num; + jsonSubArray.append(jsonSubObj); + } + jsonObj["data"] = jsonSubArray; + jsonArray.append(jsonObj); - nTotalCount += values.size(); - } - QJsonObject jObj; - jObj["data"] = jsonArray; - jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); - jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); - jObj["totalcount"] = nTotalCount; - QJsonDocument jsonDoc(jObj); - stjsonRank.jdata = jsonDoc.toJson(); - m_listMap.append(stjsonRank); - } + nTotalCount += values.size(); + } + QJsonObject jObj; + jObj["data"] = jsonArray; + jObj["mindate"] = dateStart.toString("yyyy.MM.dd"); + jObj["maxdate"] = dateEnd.toString("yyyy.MM.dd"); + jObj["totalcount"] = nTotalCount; + QJsonDocument jsonDoc(jObj); + stjsonRank.jdata = jsonDoc.toJson(); + m_listMap.append(stjsonRank); + } } void SSpammer::SStatsJson::makeTable(SDatagroup &_datagroup, const QMap &_mapCategory) { - makeTableBuzz(_datagroup, _mapCategory); - makeTableRank(_datagroup, _mapCategory); + makeTableBuzz(_datagroup, _mapCategory); + makeTableRank(_datagroup, _mapCategory); } bool SSpammer::SStatsJson::uploadData(QSqlDatabase &_db, const int &_nCompany) { - QSqlQuery query(_db); - { - QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 3"; - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } + QSqlQuery query(_db); + { + QString strQuery = "delete from stats_json where company_num = " + QString::number(_nCompany) + " and servicenum = 3"; + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } - foreach (const stStatsJson& ststats, m_listMap) - { - QString strQuery = "insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values ("; - strQuery += QString::number(_nCompany) + ","; - strQuery += QString::number(ststats.servicenum) + ","; - strQuery += "'" + ststats.title + "',"; - strQuery += "'" + ststats.subtitle + "',"; - strQuery += QString::number(ststats.category_num) + ","; - strQuery += QString::number(ststats.platformname_num) + ","; - strQuery += "'" + ststats.jdata +"')"; + foreach (const stStatsJson& ststats, m_listMap) + { + QString strQuery = "insert into stats_json (company_num, servicenum, title, subtitle, category_num, platformname_num, jdata) values ("; + strQuery += QString::number(_nCompany) + ","; + strQuery += QString::number(ststats.servicenum) + ","; + strQuery += "'" + ststats.title + "',"; + strQuery += "'" + ststats.subtitle + "',"; + strQuery += QString::number(ststats.category_num) + ","; + strQuery += QString::number(ststats.platformname_num) + ","; + strQuery += "'" + ststats.jdata +"')"; - if (!query.exec(strQuery.toUtf8())) - { - m_pSInitializer->insertLog(query.lastQuery()); - m_pSInitializer->insertLog(query.lastError().text()); - return false; - } - } - return true; + if (!query.exec(strQuery.toUtf8())) + { + m_pSInitializer->insertLog(query.lastQuery()); + m_pSInitializer->insertLog(query.lastError().text()); + return false; + } + } + return true; } diff --git a/FilterProcess/sspammer.h b/FilterProcess/sspammer.h index 724a1dd..94daf73 100644 --- a/FilterProcess/sspammer.h +++ b/FilterProcess/sspammer.h @@ -1,217 +1,231 @@ #ifndef SSPAMMER #define SSPAMMER + #include "sservice.h" #include "sfilteralgorithm.h" #include "sinitializer.h" class QString; class QStringList; -class SSpammer:public SService + +class SSpammer : public SService { public: - struct stReal - { - QSet m_setRealAllUrl; - QSet m_setRealBodyUrl; - QMap m_mapRealReplyUniqueUrl; //multiple - }; + struct stReal + { + QSet m_setRealAllUrl; + QSet m_setRealBodyUrl; + QMap m_mapRealReplyUniqueUrl; //multiple + }; - struct stSpammer - { - int id_num; - int category_num; - QString id_id; - int nicknamecount; - int bodycount; - int replycount; - double spammervalue; - int rank; - QString platformname_name; - int platformname_num; - stSpammer():id_num(0), category_num(0), nicknamecount(0), bodycount(0), replycount(0), rank(0), spammervalue(0.0), platformname_num(0){} + struct stSpammer + { + stSpammer():id_num(0), category_num(0), nicknamecount(0), bodycount(0), replycount(0), rank(0), spammervalue(0.0), platformname_num(0){} - }; + int id_num; + int category_num; + QString id_id; + int nicknamecount; + int bodycount; + int replycount; + double spammervalue; + int rank; + QString platformname_name; + int platformname_num; - struct stStatsSpaSpammerRank - { - int id_num; - QString id_id; - QString platformname_name; - int nicknamecount; - int bodycount; - int replycount; - double spammervalue; - int rank; - QString subject; - int company_num; - stStatsSpaSpammerRank():id_num(0),nicknamecount(0),bodycount(0),replycount(0),rank(0), spammervalue(0.0){} + }; - }; + struct stStatsSpaSpammerRank + { + stStatsSpaSpammerRank():id_num(0),nicknamecount(0),bodycount(0),replycount(0),rank(0), spammervalue(0.0){} - struct stBodySpammerMap - { - int num; - int body_num; - int id_num; - int category_num; - int realin; - QString date; - int platformname_num; - stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){} + int id_num; + QString id_id; + QString platformname_name; + int nicknamecount; + int bodycount; + int replycount; + double spammervalue; + int rank; + QString subject; + int company_num; - }; + }; - struct stReplySpammerMap - { - int num; - int reply_num; - int body_num; - int id_num; - int category_num; - QString body_date; - stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){} - }; + struct stBodySpammerMap + { + stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){} - struct stSpammerScore - { - int body; - int reply; - int id_num; - QSet nickname; - stSpammerScore():body(0),reply(0), id_num(0){} - }; + int num; + int body_num; + int id_num; + int category_num; + int realin; + QString date; + int platformname_num; - struct stSpammerRank - { - double value; - int platformform_num; - QString id; - int id_num; - stSpammerRank():value(0.0), platformform_num(1), id_num(0){} - }; + }; - struct stBuzzy - { - int m_nCategory; - QMap m_mapBodyBuzz; - QMap m_mapReplyBuzz; - }; + struct stReplySpammerMap + { + stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){} - struct stStatsJson - { - int company_num; - int servicenum; - QString title; - QString subtitle; - int platformname_num; - QString jdata; - int category_num; - stStatsJson():company_num(0), servicenum(3), platformname_num(1), category_num(0){} - }; + int num; + int reply_num; + int body_num; + int id_num; + int category_num; + QString body_date; + }; - class STSpammer - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory, QSet& setSpammer); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); + struct stSpammerScore + { + stSpammerScore():body(0),reply(0), id_num(0){} - }; + int body; + int reply; + int id_num; + QSet nickname; + }; - class SStatsSpaSpammerRank - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - }; + struct stSpammerRank + { + stSpammerRank():value(0.0), platformform_num(1), id_num(0){} - class SBodySpammerMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory ,QSet& setSpammer); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + double value; + int platformform_num; + QString id; + int id_num; - class SReplySpammerMap - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } - void clear(){ m_listMap.clear(); } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory, QSet& setSpammer); - bool uploadData(QSqlDatabase &_db, const int &_nCompany); - bool changeTable(QSqlDatabase &_db, const int &_nCompany); - }; + }; - struct isGreaterSpammerValue - { - bool operator()(const stSpammer& first, const stSpammer& second) const - { - return first.spammervalue > second.spammervalue; - } + struct stBuzzy + { + int m_nCategory; + QMap m_mapBodyBuzz; + QMap m_mapReplyBuzz; + }; - bool operator()(const stStatsSpaSpammerRank& first, const stStatsSpaSpammerRank& second) const - { - return first.spammervalue > second.spammervalue; - } - bool operator()(const stSpammerRank& first, const stSpammerRank& second) const - { - return first.value > second.value; - } - }; + struct stStatsJson + { + stStatsJson() : company_num(0), servicenum(3), platformname_num(1), category_num(0){} - class SStatsJson - { - private: - SInitializer *m_pSInitializer; - QList m_listMap; - public: - void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } - void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); - void makeTableBuzz(SDatagroup &_datagroup, const QMap& _mapCategory); - void makeTableRank(SDatagroup &_datagroup, const QMap& _mapCategory); - bool uploadData(QSqlDatabase& _db, const int &_nCompany); - void clear(){ m_listMap.clear(); } - }; + int company_num; + int servicenum; + QString title; + QString subtitle; + int platformname_num; + QString jdata; + int category_num; + }; + + class STSpammer + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory, QSet& setSpammer); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + class SStatsSpaSpammerRank + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; + + class SBodySpammerMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory ,QSet& setSpammer); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + }; + + class SReplySpammerMap + { + public: + void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; } + void clear(){ m_listMap.clear(); } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory, QSet& setSpammer); + bool uploadData(QSqlDatabase &_db, const int &_nCompany); + bool changeTable(QSqlDatabase &_db, const int &_nCompany); + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + }; + + struct isGreaterSpammerValue + { + bool operator()(const stSpammer& first, const stSpammer& second) const + { + return first.spammervalue > second.spammervalue; + } + + bool operator()(const stStatsSpaSpammerRank& first, const stStatsSpaSpammerRank& second) const + { + return first.spammervalue > second.spammervalue; + } + bool operator()(const stSpammerRank& first, const stSpammerRank& second) const + { + return first.value > second.value; + } + }; + + class SStatsJson + { + public: + void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; } + void makeTable(SDatagroup &_datagroup, const QMap& _mapCategory); + void makeTableBuzz(SDatagroup &_datagroup, const QMap& _mapCategory); + void makeTableRank(SDatagroup &_datagroup, const QMap& _mapCategory); + bool uploadData(QSqlDatabase& _db, const int &_nCompany); + void clear(){ m_listMap.clear(); } + + private: + SInitializer *m_pSInitializer; + QList m_listMap; + + }; -private: - SFilterAlgorithm m_SFilterAlgorithm; - QMap m_mapCategory; - STSpammer m_STSpammer; - //SStatsSpaSpammerRank m_SStatsSpaSpammerRank; - SBodySpammerMap m_SBodySpammerMap; - SReplySpammerMap m_SReplySpammerMap; - QSet m_setSpammer; - SStatsJson m_SStatsJson; public: - virtual void setInitiaizer(SInitializer &_initializer); - virtual bool uploadData(int _companyNum); - virtual bool changeTable(int _companyNum); - virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); - virtual bool makeOverallCategory(int _categoryNum); - virtual bool makeTable(SDatagroup &_datagroup); + virtual void setInitiaizer(SInitializer &_initializer); + virtual bool uploadData(int _companyNum); + virtual bool changeTable(int _companyNum); + virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter); + virtual bool makeOverallCategory(int _categoryNum); + virtual bool makeTable(SDatagroup &_datagroup); + +private: + SFilterAlgorithm m_SFilterAlgorithm; + QMap m_mapCategory; + STSpammer m_STSpammer; + SBodySpammerMap m_SBodySpammerMap; + SReplySpammerMap m_SReplySpammerMap; + QSet m_setSpammer; + SStatsJson m_SStatsJson; }; - - #endif // SSPAMMER - diff --git a/MorphereAnalyzer/widget.cpp.bak b/MorphereAnalyzer/widget.cpp.bak deleted file mode 100644 index 886b72b..0000000 --- a/MorphereAnalyzer/widget.cpp.bak +++ /dev/null @@ -1,1377 +0,0 @@ -#include "widget.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "../Json/sjson.h" -#include "../common.h" - -/* -QSqlDatabase dbWeb = QSqlDatabase::addDatabase("QMYSQL"); -dbWeb.setHostName("db.big-bird.co.kr"); -dbWeb.setUserName("concepters"); -dbWeb.setPassword("con97996655"); -dbWeb.setDatabaseName("dbconcepters"); -*/ - -#define D_NOT_SELECT -1 - -#define SAFE_DELETE(x) if(x != NULL) { delete x; x = NULL; } -#define SAFE_DELETEARRAY(x) if(x != NULL) { delete [] x; x = NULL; } -#define SAFE_RELEASE(x) if(x != NULL) { x->Release(); x = NULL; } - -Widget::Widget(QWidget *parent) - : QWidget(parent) -{ - if (ReloadColumn() == false) - return; - - QVBoxLayout *vMainLayout = new QVBoxLayout; - vMainLayout->setAlignment(Qt::AlignVCenter); - setMenuWidget(); - //vMainLayout->addWidget(setMenuWidget()); - { - QVBoxLayout *vlayout = new QVBoxLayout; - - { - QHBoxLayout *hlayout = new QHBoxLayout; - if (m_nColumn != -1) - hlayout->addWidget(setDateWidgets()); - hlayout->addWidget(setCountWidgets()); - //vlayout->addLayout(hlayout); - } - - vlayout->addWidget(setSearchWidgets()); - vlayout->addWidget(setLengthWidgets()); - vlayout->addWidget(setReplaceWidgets()); - vlayout->setAlignment(Qt::AlignTop); - - { - QHBoxLayout *hlayout = new QHBoxLayout; - hlayout->addWidget(setDataWidgets()); - hlayout->addLayout(vlayout); - //hlayout->addWidget(setFilterWidgets()); - setFilterWidgets(); - vMainLayout->addLayout(hlayout,2); - } - - m_ptwData = new QTabWidget; - vMainLayout->addWidget(m_ptwData,7); - m_ptwData->setTabsClosable(true); - connect(m_ptwData,SIGNAL(tabCloseRequested(int)),this,SLOT(CloseTab(int))); - connect(m_ptwData,SIGNAL(tabBarDoubleClicked(int)),this,SLOT(DoubleClickTab(int))); - m_pProgress = new QProgressBar; - vMainLayout->addWidget(m_pProgress,1); - } - setLayout(vMainLayout); - DataGroupRefresh(); - FilterGroupRefresh(); - AddTable("Start"); -} - -Widget::~Widget() -{ -} - -QTableWidget *Widget::AddTable(QString _str) -{ - STable *pTable = new STable; - m_ptwData->addTab(pTable,_str); - return (QTableWidget *)pTable; -} - -void Widget::CloseTab(int index) -{ - ((STable*)(m_ptwData->widget(index)))->clear(); - m_ptwData->removeTab(index); -} - -void Widget::DoubleClickTab(int index) -{ - bool ok; - if (index < 0) return; - QString text = QInputDialog::getText(this,"Tab name change","Name : ", QLineEdit::Normal,m_ptwData->tabText(index), &ok); - if (ok) - { - m_ptwData->setTabText(index,text); - } -} - -QMenuBar *Widget::setMenuWidget() -{ - QMenuBar *pMenuBar = new QMenuBar(); - { - QMenu *pFile = pMenuBar->addMenu("File"); - connect(pFile->addAction("New"), SIGNAL(triggered()), this, SLOT(FileNew())); - connect(pFile->addAction("CSV Import"), SIGNAL(triggered()), this, SLOT(FileImport())); - connect(pFile->addAction("CSV Export"), SIGNAL(triggered()), this, SLOT(FileExport())); - pFile->addSeparator(); - connect(pFile->addAction("Exit"), SIGNAL(triggered()), this, SLOT(FileExit())); - } - return pMenuBar; -} - -void Widget::FileNew() -{ - bool ok; - QString text = QInputDialog::getText(this,"New Row Count","Count :", QLineEdit::Normal,"0", &ok); - - if (ok) - { - STable *pTable = (STable*)AddTable("new"); - pTable->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); - pTable->setRowCount(text.toInt()); - } -} - -QGroupBox *Widget::setDataWidgets() -{ - QVBoxLayout *vlayout = new QVBoxLayout; - - QGroupBox *groupBox = new QGroupBox(tr("Data Group")); - m_plwData = new QListWidget; - vlayout->addWidget(m_plwData); - m_plwData->setSelectionMode(QAbstractItemView::SingleSelection); - QPushButton *ppbRefresh = new QPushButton("Refresh"); - vlayout->addWidget(ppbRefresh); - connect(ppbRefresh, SIGNAL(released()),this, SLOT(DataGroupRefresh())); - groupBox->setLayout(vlayout); - connect(m_plwData,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(DataGroupItemChanged(QListWidgetItem*))); - return groupBox; -} - -QGroupBox *Widget::setDateWidgets() -{ - //m_pcbDateCatalog = new QComboBox; - m_pdeStart = new QDateEdit(QDate::currentDate()); - m_pdeEnd = new QDateEdit(QDate::currentDate()); - - m_pdeStart->setDateRange(QDate(2003, 5, 20),QDate::currentDate()); - m_pdeEnd->setDateRange(QDate(2003, 5, 20),QDate::currentDate()); - - m_pcw = new QCalendarWidget(); - m_pdeStart->setCalendarWidget(m_pcw); - m_pdeStart->setCalendarPopup(true); - - m_pdeEnd->setCalendarWidget(m_pcw); - m_pdeEnd->setCalendarPopup(true); - - QHBoxLayout *hlayout = new QHBoxLayout(); - //hlayout->addWidget(new QLabel("Catalog:")); - //hlayout->addWidget(m_pcbDateCatalog); - hlayout->addWidget(new QLabel("Start:")); - hlayout->addWidget(m_pdeStart); - hlayout->addWidget(new QLabel("End:")); - hlayout->addWidget(m_pdeEnd); - - { - QPushButton *pbInsert = new QPushButton("Insert"); - connect(pbInsert , SIGNAL(released()),this, SLOT(SearchDate())); - hlayout->addWidget(pbInsert); - } - - hlayout->setAlignment(Qt::AlignLeft|Qt::AlignTop); - QGroupBox *groupBox = new QGroupBox(tr("Term")); - groupBox->setAlignment(Qt::AlignLeft|Qt::AlignTop); - groupBox->setLayout(hlayout); - //m_pcbDateCatalog->addItems(QStringList() << "body + reply" << "body" << "reply"); - - return groupBox; -} - -QGroupBox *Widget::setCountWidgets() -{ - QHBoxLayout *hlayout = new QHBoxLayout(); - m_pcbCountCatalog = new QComboBox; - - hlayout->addWidget(m_pcbCountCatalog); - - foreach(QStringList strList,m_vecColumn) - m_pcbCountCatalog->addItem(strList.at(E_COLUMN_NAME)); - - { - QPushButton *pbInsert = new QPushButton("Save"); - connect(pbInsert , SIGNAL(released()),this, SLOT(CountSave())); - hlayout->addWidget(pbInsert); - } - QGroupBox *groupBox = new QGroupBox(tr("Count")); - groupBox->setLayout(hlayout); - return groupBox; -} - -QGroupBox *Widget::setSearchWidgets() -{ - m_pcbCatalog = new QComboBox; - m_pcbKeyword = new QComboBox; - m_pcbMethod = new QComboBox; - m_pleString = new QLineEdit; - - m_pcbKeyword->addItem(QString("Or"));// or - m_pcbKeyword->addItem(QString("And"));// and - m_pcbKeyword->addItem(QString("Cell Delete")); - m_pcbKeyword->addItem(QString("Word Delete")); - - m_pcbMethod->addItem(QString("Sentence")); - m_pcbMethod->addItem(QString("Space")); - - foreach(QStringList strList,m_vecColumn) - m_pcbCatalog->addItem(strList.at(E_COLUMN_NAME)); - - QVBoxLayout *vlayout = new QVBoxLayout(); - { - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->addWidget(new QLabel("Item:")); - hlayout->addWidget(m_pcbCatalog); - hlayout->addWidget(new QLabel("Method:")); - hlayout->addWidget(m_pcbMethod); - hlayout->addWidget(new QLabel("keyword:")); - hlayout->addWidget(m_pcbKeyword); - vlayout->addLayout(hlayout); - } - - { - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->addWidget(new QLabel("Search:")); - hlayout->addWidget(m_pleString); - vlayout->addLayout(hlayout); - } - - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->addLayout(vlayout); - - { - QPushButton *pbInsert = new QPushButton("Insert"); - hlayout->addWidget(pbInsert); - connect(pbInsert, SIGNAL(released()),this, SLOT(SearchKeyword())); - } - - QGroupBox *groupBox = new QGroupBox(tr("Search")); - groupBox->setLayout(hlayout); - return groupBox; -} - -QGroupBox *Widget::setLengthWidgets() -{ - QHBoxLayout *hlayout = new QHBoxLayout(); - m_pcbLengthCatalog = new QComboBox; - m_pcbLengthComp = new QComboBox; - m_pcbLengthInsDel = new QComboBox; - m_pleLength = new QLineEdit; - - foreach(QStringList strList,m_vecColumn) - m_pcbLengthCatalog->addItem(strList.at(E_COLUMN_NAME)); - - m_pcbLengthComp->addItem(">",QVariant(E_LENGTH_COMP_GREATER)); - m_pcbLengthComp->addItem("<",QVariant(E_LENGTH_COMP_LESS)); - m_pcbLengthComp->addItem("=",QVariant(E_LENGTH_COMP_EQUAL)); - - m_pcbLengthInsDel->addItem("Add",QVariant(0)); - m_pcbLengthInsDel->addItem("Del",QVariant(1)); - - hlayout->addWidget(new QLabel("Item:")); - hlayout->addWidget(m_pcbLengthCatalog); - hlayout->addWidget(m_pcbLengthComp); - hlayout->addWidget(new QLabel("Length:")); - hlayout->addWidget(m_pleLength); - hlayout->addWidget(m_pcbLengthInsDel); - { - QPushButton *pbInsert = new QPushButton("Insert"); - connect(pbInsert , SIGNAL(released()),this, SLOT(SearchLengthInsert())); - hlayout->addWidget(pbInsert); - } - QGroupBox *groupBox = new QGroupBox(tr("Length")); - groupBox->setLayout(hlayout); - return groupBox; -} - -QGroupBox *Widget::setReplaceWidgets() -{ - QHBoxLayout *hlayout = new QHBoxLayout(); - m_pcbReplaceCatalog = new QComboBox; - m_pcbReplaceFind = new QComboBox; - m_pcbReplace = new QComboBox; - m_pleReplaceFind = new QLineEdit; - m_pleReplace = new QLineEdit; - - foreach(QStringList strList,m_vecColumn) - m_pcbReplaceCatalog->addItem(strList.at(E_COLUMN_NAME)); - - m_pcbReplaceFind->addItem("Sentence",QVariant(E_REPLACE_SENTENCE)); - m_pcbReplaceFind->addItem("Space",QVariant(E_REPLACE_SPACE)); - - m_pcbReplace->addItem("0",QVariant(0)); - m_pcbReplace->addItem("1",QVariant(1)); - m_pcbReplace->addItem("2",QVariant(2)); - - hlayout->addWidget(m_pcbReplaceCatalog); - hlayout->addWidget(new QLabel("Find:")); - hlayout->addWidget(m_pcbReplaceFind); - hlayout->addWidget(m_pleReplaceFind); - hlayout->addWidget(new QLabel("Replace:")); - hlayout->addWidget(m_pcbReplace); - hlayout->addWidget(m_pleReplace); - { - QPushButton *pbInsert = new QPushButton("Insert"); - connect(pbInsert , SIGNAL(released()),this, SLOT(SearchReplaceInsert())); - hlayout->addWidget(pbInsert); - } - QGroupBox *groupBox = new QGroupBox(tr("Replace")); - groupBox->setLayout(hlayout); - return groupBox; -} - -QGroupBox *Widget::setFilterWidgets() -{ - QHBoxLayout *hMainlayout = new QHBoxLayout(); - { - QVBoxLayout *vlayout = new QVBoxLayout(); - m_plwFilterGroup = new QListWidget; - m_pleFilterGroup = new QLineEdit; - vlayout->addWidget(m_plwFilterGroup); - vlayout->addWidget(m_pleFilterGroup); - { - QHBoxLayout *hlayout = new QHBoxLayout(); - QPushButton *pbInsert = new QPushButton("Insert"); - connect(pbInsert, SIGNAL(released()),this, SLOT(FilterGroupInsert())); - QPushButton *pbDelete = new QPushButton("Delete"); - connect(pbDelete, SIGNAL(released()),this, SLOT(FilterGroupDelete())); - QPushButton *pbModify = new QPushButton("Modfiy"); - connect(pbModify, SIGNAL(released()),this, SLOT(FilterGroupModify())); - QPushButton *pbCopy_Paste = new QPushButton("Copy&Paste"); - connect(pbCopy_Paste, SIGNAL(released()),this, SLOT(FilterGroupCopyPaste())); - QPushButton *pbRefresh = new QPushButton("Refresh"); - connect(pbRefresh, SIGNAL(released()),this, SLOT(FilterGroupRefresh())); - - hlayout->addWidget(pbInsert); - hlayout->addWidget(pbDelete); - hlayout->addWidget(pbModify); - hlayout->addWidget(pbCopy_Paste); - hlayout->addWidget(pbRefresh); - vlayout->addLayout(hlayout); - } - hMainlayout->addLayout(vlayout); - } - { - QVBoxLayout *vlayout = new QVBoxLayout(); - m_plwFilter = new QListWidget; - vlayout->addWidget(m_plwFilter); - connect(m_plwFilter,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),this,SLOT(currentFilterItemChanged(QListWidgetItem*,QListWidgetItem*))); - QPushButton *pbDelete = new QPushButton("Delete"); - vlayout->addWidget(pbDelete); - connect(pbDelete, SIGNAL(released()),this, SLOT(FilterDelete())); - hMainlayout->addLayout(vlayout); - } - m_pgbFilter = new QGroupBox(tr("Filter")); - m_pgbFilter->setCheckable(true); - m_pgbFilter->setChecked(false); - m_pgbFilter->setLayout(hMainlayout); - - connect(m_plwFilterGroup,SIGNAL(currentItemChanged(QListWidgetItem *,QListWidgetItem *)),this,SLOT(currentGroupItemChanged(QListWidgetItem *, QListWidgetItem *))); - return m_pgbFilter; -} - - -void Widget::DataGroupRefresh() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - m_plwData->clear(); - QSqlQuery query("select id,name,count from datagroup"); - while (query.next()) - { - QString str = query.value(1).toString(); - str += " ( "; - str += query.value(0).toString(); - str += " , "; - str += query.value(2).toString(); - str += " )"; - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwData); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - db.close(); -} - -void Widget::InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew) -{ - _pNew->setRowCount(_pNew->rowCount()+1); - for (int nCount = 0;nCount < _pCurrent->columnCount() ;nCount++ ) - { - _pNew->setItem(_pNew->rowCount()-1,nCount,new QTableWidgetItem(*_pCurrent->item(_nRow,nCount))); - } -} - -void Widget::SearchDate() -{ - STable *pNew = new STable; - STable *pCurrent = (STable *)m_ptwData->currentWidget(); - pNew->setArticleSelect(pCurrent->getArticleSelect()); - pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - m_pProgress->setRange(0,pCurrent->rowCount()-1); - - int nCurrentFilterGroupID = D_NOT_SELECT; - - if (m_pgbFilter->isChecked()) - { - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertTimeFilter(pNew->getArticleSelect(),m_pdeStart->date(),m_pdeEnd->date(),nCurrentFilterGroupID); - } - } - - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - bool bFlag = false; - QString strTime = pCurrent->item(nCount,m_nColumn)->text().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 (m_pdeStart->date() <= date && m_pdeEnd->date() >= date) - bFlag = true; - } - if (bFlag) - InsertCopyRow(nCount,pCurrent,pNew); - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" d"); - m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); - if (nCurrentFilterGroupID != D_NOT_SELECT) - RefreshFilter(nCurrentFilterGroupID); -} - -void Widget::SearchKeyword() -{ - STable *pNew = new STable; - STable *pCurrent = (STable *)m_ptwData->currentWidget(); - pNew->setArticleSelect(pCurrent->getArticleSelect()); - pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - int nCurrentFilterGroupID = D_NOT_SELECT; - - QString strKey = m_pleString->text().replace("\r\n"," "); - - strKey = strKey.replace("\n"," "); - strKey = strKey.replace("\t"," "); - - QString strTemp; - foreach(QString str, strKey.split(" ")) - { - if (str.trimmed().isEmpty() == false) - strTemp += str.trimmed() + " "; - } - - strTemp = strTemp.trimmed(); - m_pleString->setText(strTemp); - strKey = strTemp; - - if (m_pgbFilter->isChecked()) - { - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertSearchFilter(pNew->getArticleSelect(),m_pcbCatalog->currentIndex(),m_pcbMethod->currentIndex(),m_pcbKeyword->currentIndex(),strKey,nCurrentFilterGroupID); - } - } - - QStringList strListKeyword = strKey.split(" "); - if (m_pcbMethod->currentIndex() == 1) - { - for (int i = 0 ; i < strListKeyword.size(); i++ ) - { - strListKeyword[i] = " " + strListKeyword[i] + " "; - } - } - m_pProgress->setRange(0,pCurrent->rowCount()-1); - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - bool bFlag = false; - //if (m_pcbCatalog->currentText() == "ALL") - QString strData = pCurrent->item(nCount,m_pcbCatalog->currentIndex())->text(); - switch(m_pcbKeyword->currentIndex()) - { - 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: bFlag = true;break; - } - if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); - if (m_pcbKeyword->currentIndex() == 3) - { - foreach(QString strKey , strListKeyword) - { - strData.replace(strKey,""); - } - pNew->item(nCount,m_pcbCatalog->currentIndex())->setText(strData); - } - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" k"); - m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); - - if (nCurrentFilterGroupID != D_NOT_SELECT) - RefreshFilter(nCurrentFilterGroupID); -} - -void Widget::SearchLengthInsert() -{ - STable *pNew = new STable; - STable *pCurrent = (STable *)m_ptwData->currentWidget(); - pNew->setArticleSelect(pCurrent->getArticleSelect()); - pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - m_pProgress->setRange(0,pCurrent->rowCount()-1); - int nCatalog = m_pcbLengthCatalog->currentIndex(); - int nComp = m_pcbLengthComp->currentData().toInt(); - int nFlag = m_pcbLengthInsDel->currentData().toInt(); - int nLength = m_pleLength->text().toInt(); - - int nCurrentFilterGroupID = D_NOT_SELECT; - - if (m_pgbFilter->isChecked()) - { - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertLengthFilter(pCurrent->getArticleSelect(),nCatalog,nComp,nFlag,m_pleLength->text(),nCurrentFilterGroupID); - } - } - - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - bool bFlag = false; - int nCurrentLength = pCurrent->item(nCount,nCatalog)->text().trimmed().length(); - switch(nComp) - { - case E_LENGTH_COMP_GREATER: - if (nCurrentLength > nLength) - bFlag = true; - break; - case E_LENGTH_COMP_LESS: - if (nCurrentLength < nLength) - bFlag = true; - break; - case E_LENGTH_COMP_EQUAL: - if (nLength == nCurrentLength) - bFlag = true; - break; - } - if (nFlag == 1) bFlag = !bFlag; - if (bFlag) InsertCopyRow(nCount,pCurrent,pNew); - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" c"); - m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); - if (nCurrentFilterGroupID != D_NOT_SELECT) - RefreshFilter(nCurrentFilterGroupID); -} - -void Widget::SearchReplaceInsert() -{ - STable *pNew = new STable; - STable *pCurrent = (STable *)m_ptwData->currentWidget(); - pNew->setArticleSelect(pCurrent->getArticleSelect()); - pNew->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - m_pProgress->setRange(0,pCurrent->rowCount()-1); - int nCatalog = m_pcbReplaceCatalog->currentIndex(); - QStringList strListKeyword; - if (m_pcbReplaceFind->currentData().toInt() == E_REPLACE_SPACE) - strListKeyword = m_pleReplaceFind->text().split(" "); - else - strListKeyword.push_back(m_pleReplaceFind->text()); - - int nCurrentFilterGroupID = D_NOT_SELECT; - int nReplace = m_pcbReplace->currentIndex(); - if (m_pgbFilter->isChecked()) - { - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - nCurrentFilterGroupID = item->data(Qt::UserRole).toInt(); - InsertReplaceFilter(pNew->getArticleSelect(),nCatalog, - m_pcbReplaceFind->currentData().toInt(), - m_pleReplaceFind->text(),m_pleReplace->text(), - nCurrentFilterGroupID); - } - } - pNew->setRowCount(pCurrent->rowCount()); - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - for (int nColumnCount = 0;nColumnCount < pCurrent->columnCount() ;nColumnCount++ ) - { - if (nCatalog == nColumnCount) - { - QString strOut = pCurrent->item(nCount,nColumnCount)->text(); - switch(nReplace) - { - case 0: - { - foreach(QString str,strListKeyword) - strOut = strOut.replace(str,m_pleReplace->text()); - break; - } - case 1: - { - QString strMiddle; - foreach(QString strLine,strOut.split("\n")) - { - foreach(QString strWord,strLine.split(" ")) - { - bool bFlag = false; - foreach(QString str,strListKeyword) - { - if (strWord == str) - { - strMiddle += m_pleReplace->text() + " "; - bFlag = true; - break; - } - } - if (bFlag == false) - strMiddle += strWord + " "; - } - strMiddle += "\n"; - } - strOut = strMiddle; - break; - } - case 2: - QString strMiddle; - foreach(QString strLine,strOut.split("\n")) - { - foreach(QString strWord,strLine.split(" ")) - { - bool bFlag = false; - foreach(QString str,strListKeyword) - { - if (strWord.contains(str)) - { - strMiddle += m_pleReplace->text() + " "; - bFlag = true; - break; - } - } - if (bFlag == false) - strMiddle += strWord + " "; - } - strMiddle += "\n"; - } - strOut = strMiddle; - break; - } - pNew->setItem(nCount,nColumnCount,new QTableWidgetItem(strOut)); - } - else - pNew->setItem(nCount,nColumnCount,new QTableWidgetItem(*pCurrent->item(nCount,nColumnCount))); - } - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - //m_ptwData->addTab(pNew,m_ptwData->tabText(m_ptwData->currentIndex())+" r"); - m_ptwData->addTab(pNew,STable::GetArticleType(pCurrent->getArticleSelect())); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); - - if (nCurrentFilterGroupID != D_NOT_SELECT) - RefreshFilter(nCurrentFilterGroupID); -} - -void Widget::DataGroupItemChanged( QListWidgetItem *item) -{ - QMessageBox msg; - msg.setText("Please choose..."); - msg.setModal(true); - QPushButton *pbAll = msg.addButton("All",QMessageBox::ActionRole); - QPushButton *pbBody = msg.addButton("Body",QMessageBox::ActionRole); - QPushButton *pbReply = msg.addButton("Reply",QMessageBox::ActionRole); - msg.exec(); - if (msg.clickedButton() == pbAll) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_ALL); - else if (msg.clickedButton() == pbBody) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_BODY); - else if (msg.clickedButton() == pbReply) DataReload("data_" + item->data(Qt::UserRole).toString(),STable::E_ARTICLE_REPLY); - -} - -void Widget::DataReload(QString _strTableName,int _nSelect) -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - QString strSelect; - strSelect = "select "; - foreach(QStringList strlist,m_vecColumn) - strSelect += "CONVERT(" + strlist.at(E_COLUMN_DATABASE) + " USING utf8),"; - strSelect = strSelect.left(strSelect.size()-1); - strSelect += " from "; - strSelect += _strTableName; - - if (_nSelect == STable::E_ARTICLE_BODY) - strSelect += " WHERE article_form = 'body'"; - if (_nSelect == STable::E_ARTICLE_REPLY) - strSelect += " WHERE article_form = 'reply'"; - - QSqlQuery query(strSelect); - STable *pTable = (STable *)m_ptwData->currentWidget(); - pTable->setArticleSelect(_nSelect); - pTable->clear(); - - pTable->SetHeaderList(&m_vecColumn,E_COLUMN_NAME); - pTable->setRowCount(query.size()); - m_pProgress->setRange(0,query.size()); - int nCount = 0; - while (query.next()) - { - for (int i = 0; i < pTable->columnCount() ; i++) - { - QString str = query.value(i).toString().replace("\n"," "); - pTable->setItem(nCount,i,new QTableWidgetItem(" "+str.replace("\t"," ")+" ")); - } - nCount++; - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - db.close(); -} - -void Widget::FilterGroupInsert() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - - QString strQuery = QString("insert into filtergroup set " - "name = '" + m_pleFilterGroup->text() + "'"); - db.exec(strQuery.toUtf8()); - db.close(); - FilterGroupRefresh(); -} - -void Widget::FilterGroupDelete() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - QString strQuery = QString("delete from filtergroup where id = " + item->data(Qt::UserRole).toString()); - db.exec(strQuery.toUtf8()); - strQuery = QString("delete from filter where filtergroup_id = " + item->data(Qt::UserRole).toString()); - db.exec(strQuery.toUtf8()); - RefreshFilter(item->data(Qt::UserRole).toInt()); - } - db.close(); - FilterGroupRefresh(); -} - -void Widget::FilterGroupModify() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - QString strQuery = QString("update filtergroup set name = '" + m_pleFilterGroup->text() + "' where id = " + item->data(Qt::UserRole).toString()); - qDebug() << strQuery; - db.exec(strQuery.toUtf8()); - } - db.close(); - FilterGroupRefresh(); -} - -void Widget::FilterGroupCopyPaste() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - { - QSqlQuery query; - QString strQuery = QString("insert into filtergroup set " - "name = '" + item->text() + "-'"); - query.exec(strQuery.toUtf8()); - query.exec("select max(id) from filtergroup"); - if (query.next()) - { - strQuery = QString("insert into filter (type,data,filtergroup_id) select type,data,"); - strQuery += query.value(0).toString(); - strQuery += " from filter where filtergroup_id = " + item->data(Qt::UserRole).toString(); - qDebug() << strQuery; - query.exec(strQuery.toUtf8()); - } - } - db.close(); - FilterGroupRefresh(); -} - -void Widget::FilterGroupRefresh() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - m_plwFilterGroup->clear(); - QSqlQuery query("select id,name from filtergroup"); - while (query.next()) - { - QListWidgetItem *pItem = new QListWidgetItem(query.value(1).toString(),m_plwFilterGroup); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - db.close(); -} - -void Widget::InsertFilter(int _nType,QString _strJson,int _nGroup) -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - - QString sql = "insert into filter (type,data,filtergroup_id) value ("; - sql += QString::number(_nType); - sql += ",'" + _strJson + "',"; - sql += QString::number(_nGroup) + ")"; - QSqlQuery query; - if (query.exec(sql.toUtf8()) == false) - { - qDebug() << sql; - qDebug() << query.lastError().text(); - } - db.close(); -} - -void Widget::InsertTimeFilter(int _nArticle ,QDate _dateStart ,QDate _dateEnd ,int _nGroup) -{ - QString strJson; - SJson json; - strJson = json.Set(strJson,"Article",QString::number(_nArticle)); - strJson = json.Set(strJson,"Start",_dateStart.toString("yyyy-MM-dd")); - strJson = json.Set(strJson,"End",_dateEnd.toString("yyyy-MM-dd")); - InsertFilter(E_FILTER_TYPE_DATE,json.Sql(strJson),_nGroup); -} - -void Widget::InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup) -{ - QString strJson; - SJson json; - strJson = json.Set(strJson,"Article",QString::number(_nArticle)); - strJson = json.Set(strJson,"Category",_nCategory); - strJson = json.Set(strJson,"Method",_nMethod); - strJson = json.Set(strJson,"Keyword",_nKeyword); - strJson = json.Set(strJson,"String",_str); - InsertFilter(E_FILTER_TYPE_SEARCH,json.Sql(strJson),_nGroup); -} - -void Widget::InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup) -{ - QString strJson; - SJson json; - strJson = json.Set(strJson,"Article",QString::number(_nArticle)); - strJson = json.Set(strJson,"Category",_nCategory); - strJson = json.Set(strJson,"Comp",_nComp); - strJson = json.Set(strJson,"InsDel",_nInsDel); - strJson = json.Set(strJson,"String",_str); - InsertFilter(E_FILTER_TYPE_LENGTH,json.Sql(strJson),_nGroup); -} - -void Widget::InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup) -{ - QString strJson; - SJson json; - strJson = json.Set(strJson,"Article",QString::number(_nArticle)); - strJson = json.Set(strJson,"Category",_nCategory); - strJson = json.Set(strJson,"Find",_nFind); - strJson = json.Set(strJson,"String_Find",_strFind); - strJson = json.Set(strJson,"String_Replace",_strReplace); - InsertFilter(E_FILTER_TYPE_REPLACE,json.Sql(strJson),_nGroup); -} - -void Widget::RefreshFilter(int _nGroup) -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - QSqlQuery query("select id,type,data from filter where filtergroup_id = " + QString::number(_nGroup)); - - SJson json; - m_plwFilter->clear(); - while (query.next()) - { - QString str; - QString strJson = query.value(2).toString(); - str = STable::GetArticleType(json.Get(strJson,"Article").toInt()); - switch(query.value(1).toInt()) - { - case E_FILTER_TYPE_DATE: - str += " Start : "; - str += json.Get(strJson,"Start"); - str += " End : "; - str += json.Get(strJson,"End"); - break; - case E_FILTER_TYPE_SEARCH: - str += " "; - str += m_pcbCatalog->itemText(json.GetNumber(strJson,"Category")) + " , "; - str += m_pcbMethod->itemText(json.GetNumber(strJson,"Method")) + " , "; - str += m_pcbKeyword->itemText(json.GetNumber(strJson,"Keyword")) + " , "; - str += json.Get(strJson,"String"); - break; - case E_FILTER_TYPE_LENGTH: - str += " "; - str += m_pcbLengthCatalog->itemText(json.GetNumber(strJson,"Category")) + " "; - str += m_pcbLengthComp->itemText(json.GetNumber(strJson,"Comp")) + " "; - str += json.Get(strJson,"String") + " , "; - str += m_pcbLengthInsDel->itemText(json.GetNumber(strJson,"InsDel")); - break; - case E_FILTER_TYPE_REPLACE: - str += " "; - str += m_pcbReplaceCatalog->itemText(json.GetNumber(strJson,"Category")) + " , "; - str += m_pcbReplaceFind->itemText(json.GetNumber(strJson,"Find")) + " "; - str += json.Get(strJson,"String_Find") + " --> "; - str += json.Get(strJson,"String_Replace"); - break; - } - QListWidgetItem *pItem = new QListWidgetItem(str,m_plwFilter); - pItem->setData(Qt::UserRole, QVariant(query.value(0))); - } - db.close(); -} - -void Widget::currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) -{ - Q_UNUSED(_pPrev); - if (_pCurrent == 0) return; - RefreshFilter(_pCurrent->data(Qt::UserRole).toInt()); - m_pleFilterGroup->setText(_pCurrent->text()); - m_pleFilterGroup->repaint(); -} - -void Widget::FilterDelete() -{ - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - foreach (QListWidgetItem *item,m_plwFilter->selectedItems()) - { - QString strQuery = QString("delete from filter where id = '" + item->data(Qt::UserRole).toString() + "'"); - db.exec(strQuery.toUtf8()); - } - db.close(); - foreach (QListWidgetItem *item,m_plwFilterGroup->selectedItems()) - RefreshFilter(item->data(Qt::UserRole).toInt()); -} - -void Widget::currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev) -{ - Q_UNUSED(_pPrev); - if (_pCurrent == 0) return; - QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); - db.setHostName("bigbird.iptime.org"); - db.setUserName("admin"); - db.setPassword("admin123"); - db.setDatabaseName("concepters"); - if (db.open() == false) - { - qDebug() << db.lastError().text(); - return; - } - QSqlQuery query("select id,type,data from filter where id = " + _pCurrent->data(Qt::UserRole).toString()); - if (!query.next()) return; - SJson json; - QString strJson = query.value(2).toString(); - switch(query.value(1).toInt()) - { - case E_FILTER_TYPE_DATE: - m_pdeStart->setDate(QDate::fromString(json.Get(strJson,"Start"),"yyyy-MM-dd")); - m_pdeEnd->setDate(QDate::fromString(json.Get(strJson,"End"),"yyyy-MM-dd")); - m_pleString->setText(""); - m_pleLength->setText(""); - m_pleReplaceFind->setText(""); - m_pleReplace->setText(""); - break; - case E_FILTER_TYPE_SEARCH: - m_pcbCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); - m_pcbMethod->setCurrentIndex(json.GetNumber(strJson,"Method")); - m_pcbKeyword->setCurrentIndex(json.GetNumber(strJson,"Keyword")); - m_pleString->setText(json.Get(strJson,"String")); - m_pleLength->setText(""); - m_pleReplaceFind->setText(""); - m_pleReplace->setText(""); - - break; - case E_FILTER_TYPE_LENGTH: - m_pcbLengthCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); - m_pcbLengthComp->setCurrentIndex(json.GetNumber(strJson,"Comp")); - m_pcbLengthInsDel->setCurrentIndex(json.GetNumber(strJson,"InsDel")); - m_pleLength->setText(json.Get(strJson,"String")); - m_pleReplaceFind->setText(""); - m_pleReplace->setText(""); - m_pleString->setText(""); - break; - case E_FILTER_TYPE_REPLACE: - m_pcbReplaceCatalog->setCurrentIndex(json.GetNumber(strJson,"Category")); - m_pcbReplaceFind->setCurrentIndex(json.GetNumber(strJson,"Find")); - m_pleReplaceFind->setText(json.Get(strJson,"String_Find")); - m_pleReplace->setText(json.Get(strJson,"String_Replace")); - m_pleString->setText(""); - m_pleLength->setText(""); - break; - } -} - -bool Widget::ReloadColumn() -{ - m_vecColumn.clear(); - QFile file("column.txt"); - if (file.open(QIODevice::ReadOnly | QIODevice::Text) == false) return false; - { - while (!file.atEnd()) - { - QString str = QString(file.readLine()); - if (str.at(0) == QChar('#')) continue; - if (str.trimmed().isEmpty()) continue; - m_vecColumn.push_back(str.split(",")); - } - } - if (m_vecColumn.size() <= 0) return false; - - m_nColumn = -1; - m_nTitle = -1; - m_nBody = -1; - m_nPlatformTitle = -1; - foreach(QStringList strList,m_vecColumn) - { - if (strList.at(E_COLUMN_DATE).trimmed() == QString("o") ) - break; - else - m_nColumn++; - } - m_nColumn++; - foreach(QStringList strList,m_vecColumn) - { - if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("article_title") ) - break; - else - m_nTitle++; - } - m_nTitle++; - foreach(QStringList strList,m_vecColumn) - { - if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("article_data") ) - break; - else - m_nBody++; - } - m_nBody++; - - foreach(QStringList strList,m_vecColumn) - { - if (strList.at(E_COLUMN_DATABASE).trimmed() == QString("platform_title") ) - break; - else - m_nPlatformTitle++; - } - m_nPlatformTitle++; - - return true; -} - -void Widget::FileImport() -{ - QString strFilename = QFileDialog::getOpenFileName(0,"Import file",QDir::currentPath(), - "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); - - QFile file(strFilename); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) return; - - STable *pNew = new STable; - QTextCodec *codec = QTextCodec::codecForName("eucKR"); - QTextStream in(&file); - int ncRow=0; - int nCount=0; - bool bQuit = true; - int nRead = 0; - int nFileLine = 0; - QVector wgHeader; - QStringList strlistHeader; - - for(int i = 0; i < m_vecColumn.size(); i++) - { - strlistHeader << m_vecColumn.at(i).at(E_COLUMN_DATABASE); - } - - - while(!in.atEnd()) - { - in.readLine(); - nFileLine++; - } - - in.seek(0); - - while(!in.atEnd()) - { - QString strLine = in.readLine(); - - if (nCount == 0) - { - QStringList strings = strLine.split(","); - if (strings.at(0) == QString("#Head#")) - { - m_pProgress->setRange(0,nFileLine - 1); - pNew->setRowCount(nFileLine - 1); - - pNew->setColumnCount(m_vecColumn.size()); - for (int i = 1; i < strings.size();i++) - { - for (int j = 0; j < m_vecColumn.size(); j++) - { - if (strlistHeader.contains(strings.at(i))) - { - if (m_vecColumn.at(j).at(E_COLUMN_DATABASE) == strings.at(i).trimmed()) - { - wgHeader << j; - } - } - else - wgHeader << -1; - } - } - nCount++; - for(int i = 0; i < m_vecColumn.size(); i++) - { - pNew->setHorizontalHeaderItem(i ,new QTableWidgetItem(m_vecColumn.at(wgHeader.at(i)).at(E_COLUMN_NAME))); - } - - continue; - } - else - { - pNew->setColumnCount(strings.size()); - m_pProgress->setRange(0,nFileLine); - pNew->setRowCount(nFileLine); - - } - } - strLine = strLine.replace("\"",""); - QStringList strings = strLine.split(","); - int ncCol=0; - //pNew->setRowCount(strings.size()); - foreach(QString str,strings) - { - if(wgHeader.at(ncCol) != -1) - pNew->setItem(ncRow,wgHeader.at(ncCol),new QTableWidgetItem(QString(" " + str.trimmed() + " "))); - ncCol++; - } - ncRow++; - m_pProgress->setValue(ncRow+1); - m_pProgress->repaint(); - //qDebug() << ncRow; - } - - file.close(); - m_ptwData->addTab(pNew,"import"); - m_ptwData->setCurrentIndex(m_ptwData->count()-1); -} - -void Widget::FileExport() -{ - QString strFilename = QFileDialog::getSaveFileName(0,"Exoprt file",QDir::currentPath(), - "csv files (*.csv);;All files (*.*)",new QString("Text files (*.csv)")); - if (strFilename.toLower().right(4) != QString(".csv")) - strFilename += ".csv"; - QFile file(strFilename); - if(!file.open(QFile::WriteOnly | QFile::Text)) return; - - QTextStream out(&file); - QTableWidget *pCurrent = (QTableWidget *)m_ptwData->currentWidget(); - out << "#Head#,"; - - foreach(QStringList strList,m_vecColumn) - out << strList.at(E_COLUMN_DATABASE) << ","; - out << endl; - - m_pProgress->setRange(0,pCurrent->rowCount()-1); - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - for (int nColumnCount = 0;nColumnCount < pCurrent->columnCount() ;nColumnCount++ ) - { - QString str = pCurrent->item(nCount,nColumnCount)->text(); - str = str.replace(",","."); - str = str.replace("\n",""); - out << "\"" << str << "\"" << ","; - } - out << "\"\"" << endl; - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - file.close(); -} - -void Widget::FileExit() -{ - exit(1); -} - -struct SCount -{ - SCount() - { - m_str.clear(); - m_nCount = 0; - } - - SCount(QString _str) - { - m_str = _str; - m_nCount = 1; - } - QString m_str; - int m_nCount; -}; - -void Widget::CountSave() -{ - QTableWidget *pCurrent = (QTableWidget *)m_ptwData->currentWidget(); - int nCatalog = m_pcbCountCatalog->currentIndex(); - QString strFilename = QFileDialog::getSaveFileName(0,"Count file",QDir::currentPath(), - "csv files (*.csv);;All files (*.*)",new QString("csv files (*.csv)")); - if (strFilename.toLower().right(4) != QString(".csv")) - strFilename += ".csv"; - m_pProgress->setRange(0,pCurrent->rowCount()-1); - - QVector vecData; - for (int nCount = 0 ; nCount < pCurrent->rowCount(); nCount++ ) - { - QString str; - if (nCatalog == m_nColumn) - { - QDateTime date; - str = date.fromString(pCurrent->item(nCount,nCatalog)->text().trimmed(),"yyyy-MM-dd hh:mm:ss").date().toString("yyyy-MM-dd"); - } - else - str = pCurrent->item(nCount,nCatalog)->text().trimmed(); - bool bInsert = true; - for (int i = 0; i < vecData.size(); i++) - { - if(vecData[i].m_str.compare(str) == 0) - { - vecData[i].m_nCount++; - bInsert = false; - break; - } - } - if (bInsert) - vecData.push_back(SCount(str)); - m_pProgress->setValue(nCount); - m_pProgress->repaint(); - } - QFile file(strFilename); - if(!file.open(QFile::WriteOnly | QFile::Text)) return; - QTextStream out(&file); - out << pCurrent->horizontalHeaderItem(nCatalog)->text() << "," << vecData.size() << endl << endl; - foreach(SCount stCount,vecData) - { - QString str = stCount.m_str.replace(",","."); - str = str.replace("\n",""); - out << "\"" << str << "\"" << "," << stCount.m_nCount << endl; - } - file.close(); -} diff --git a/MorphereAnalyzer/widget.h.bak b/MorphereAnalyzer/widget.h.bak deleted file mode 100644 index b46022d..0000000 --- a/MorphereAnalyzer/widget.h.bak +++ /dev/null @@ -1,155 +0,0 @@ -#ifndef WIDGET_H -#define WIDGET_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "stable.h" - -class Widget : public QWidget -{ - enum E_COLUMN - { - E_COLUMN_DATABASE=0, - E_COLUMN_NAME, - E_COLUMN_DATE, - E_COLUMN_COUNT, - }; - - enum E_LENGTH_COMP - { - E_LENGTH_COMP_GREATER = 0, - E_LENGTH_COMP_LESS, - E_LENGTH_COMP_EQUAL, - }; - Q_OBJECT -public: - Widget(QWidget *parent = 0); - ~Widget(); - QTabWidget *GetTabWidget() - { - return m_ptwData; - } - int getDatePosition() - { - return m_nColumn; - } - int getTitlePosition() - { - return m_nTitle; - } - int getBodyPosition() - { - return m_nBody; - } - int getPlatformTitlePosition() - { - return m_nPlatformTitle; - } - -private: - // Data - QListWidget *m_plwData; - // Date - QCalendarWidget *m_pcw; - QDateEdit *m_pdeStart; - QDateEdit *m_pdeEnd; - //QPushButton *m_ppbInsertCalc; - //QComboBox *m_pcbDateCatalog; - int m_nColumn; - int m_nTitle; - int m_nBody; - int m_nPlatformTitle; - // Keyword - QComboBox *m_pcbCatalog; - QComboBox *m_pcbKeyword; - QComboBox *m_pcbMethod; - QLineEdit *m_pleString; - //QPushButton *m_ppbInsertSearch; - // Length - QComboBox *m_pcbLengthCatalog; - QComboBox *m_pcbLengthComp; - QComboBox *m_pcbLengthInsDel; - QLineEdit *m_pleLength; - // Filter - QListWidget *m_plwFilterGroup; - QListWidget *m_plwFilter; - QLineEdit *m_pleFilterGroup; - QGroupBox *m_pgbFilter; - // Replace - QComboBox *m_pcbReplaceCatalog; - QComboBox *m_pcbReplaceFind; - QLineEdit *m_pleReplaceFind; - QLineEdit *m_pleReplace; - QComboBox *m_pcbReplace; - - // Count - QComboBox *m_pcbCountCatalog; - - // - QTabWidget *m_ptwData; - // - QProgressBar *m_pProgress; - // Column - QVector m_vecColumn; -private: - QMenuBar *setMenuWidget(); - QGroupBox *setDataWidgets(); - QGroupBox *setDateWidgets(); - QGroupBox *setCountWidgets(); - QGroupBox *setSearchWidgets(); - QGroupBox *setLengthWidgets(); - QGroupBox *setFilterWidgets(); - QGroupBox *setReplaceWidgets(); - - QTableWidget *AddTable(QString _str); - void SetTableHead(); - void InsertCopyRow(int _nRow,QTableWidget *_pCurrent,QTableWidget *_pNew); - void DataReload(QString _strTableName,int _nSelect); - void InsertFilter(int _nType,QString _strJson,int _nGroup); - void InsertTimeFilter(int _nTimeCategory ,QDate _dateStart ,QDate _dateEnd ,int _nGroup); - void InsertSearchFilter(int _nArticle,int _nCategory,int _nMethod,int _nKeyword, QString _str,int _nGroup); - void InsertLengthFilter(int _nArticle,int _nCategory,int _nComp,int _nInsDel,QString _str,int _nGroup); - void InsertReplaceFilter(int _nArticle,int _nCategory,int _nFind,QString _strFind,QString _strReplace,int _nGroup); - void RefreshFilter(int _nGroup); - - bool ReloadColumn(); - QString GetArticleType(int _nSelect); -public slots: - void CloseTab(int index); - void DoubleClickTab(int index); - void SearchDate(); - void CountSave(); - void SearchKeyword(); - void DataGroupRefresh(); - void DataGroupItemChanged ( QListWidgetItem * item ); - void FilterGroupInsert(); - void FilterGroupDelete(); - void FilterGroupModify(); - void FilterGroupRefresh(); - void FilterGroupCopyPaste(); - void currentGroupItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0); - void FilterDelete(); - void currentFilterItemChanged(QListWidgetItem *_pCurrent, QListWidgetItem *_pPrev=0); - void SearchLengthInsert(); - void SearchReplaceInsert(); - void FileNew(); - void FileImport(); - void FileExport(); - void FileExit(); -}; - -#endif // WIDGET_H diff --git a/package-clients.bat b/package-clients.bat index 03ea992..4baa617 100644 --- a/package-clients.bat +++ b/package-clients.bat @@ -14,7 +14,7 @@ SET FILTER_PATH=%BUILD_PATH_PREFIX%Filter%BUILD_PATH_POSTFIX%\%CONFIGURE% SET FILTER_PROCESS_PATH=%BUILD_PATH_PREFIX%FilterProcess%BUILD_PATH_POSTFIX%\%CONFIGURE% SET QT_PATH=C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin -SET MYSQL_PATH=%CUR_PATH%\..\lib\libmysql\64bit +SET MYSQL_PATH=C:\Qt\libmysql\64bit SET PYTHONCRAWLER_PATH=%CUR_PATH%\WebBasedCrawler