diff --git a/FilterProcess/FilterProcess.pro b/FilterProcess/FilterProcess.pro index 4b16aea..6c9e7ee 100644 --- a/FilterProcess/FilterProcess.pro +++ b/FilterProcess/FilterProcess.pro @@ -24,7 +24,8 @@ SOURCES += main.cpp \ sinfluencer.cpp \ sspammer.cpp \ spowercafe.cpp \ - shttpsender.cpp + shttpsender.cpp \ + sservice.cpp HEADERS += \ sdbmanager.h \ diff --git a/FilterProcess/sconsumer.cpp b/FilterProcess/sconsumer.cpp index 31f5fcc..d0dac95 100644 --- a/FilterProcess/sconsumer.cpp +++ b/FilterProcess/sconsumer.cpp @@ -48,6 +48,7 @@ bool SConsumer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) bFiltered[i] = false; _datagroup.copyData(vecData); + m_pSInitializer->insertCategoryLog(QString("Consumer Category: ") + m_pSInitializer->getCategoryName(_nCategory)); foreach (const SInitializer::stFilter& filter, _listFilter) { switch(filter.m_nType) @@ -71,9 +72,14 @@ bool SConsumer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); break; } + m_pSInitializer->insertCategoryLog("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("CategoryNum:") + QString::number(_nCategory) + ",(" + + 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)" ); const int *anColumn = m_pSInitializer->getColumnIntArray(); if (bFiltered[SInitializer::E_ARTICLE_BODY]) diff --git a/FilterProcess/sfilteralgorithm.cpp b/FilterProcess/sfilteralgorithm.cpp index 03a80f8..8191c14 100644 --- a/FilterProcess/sfilteralgorithm.cpp +++ b/FilterProcess/sfilteralgorithm.cpp @@ -4,12 +4,15 @@ #include "sfilteralgorithm.h" #include "../Json/sjson.h" #include - +#include +using namespace std; +/* 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 SFilterAlgorithm::FilterDate(QVector *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn) { @@ -37,6 +40,7 @@ void SFilterAlgorithm::FilterDate(QVector *m_data, bool *m_bDataFla } m_data[nSelect].clear(); m_data[nSelect] = copyData; + //cout << ((nSelect == 0) ? "body" : "reply") << ":" << m_data[nSelect].size() << endl; } void SFilterAlgorithm::FilterLength(QVector *m_data, bool *m_bDataFlag, QString _strJson) @@ -77,6 +81,8 @@ void SFilterAlgorithm::FilterLength(QVector *m_data, bool *m_bDataF } m_data[nSelect].clear(); m_data[nSelect] = copyData; + + //cout << ((nSelect == 0) ? "body" : "reply") << ":" << m_data[nSelect].size() << endl; } void SFilterAlgorithm::FilterCounter(QVector *m_data, bool *m_bDataFlag, QString _strJson) @@ -135,6 +141,8 @@ void SFilterAlgorithm::FilterCounter(QVector *m_data, bool *m_bData } m_data[nSelect].clear(); m_data[nSelect] = copyData; + + //cout << ((nSelect == 0) ? "body" : "reply") << ":" << m_data[nSelect].size() << endl; } void SFilterAlgorithm::FilterReplace(QVector *m_data, bool *m_bDataFlag, QString _strJson) @@ -238,6 +246,7 @@ void SFilterAlgorithm::FilterSearch(QVector *m_data, bool *m_bDataF } m_data[nSelect].clear(); m_data[nSelect] = copyData; + //cout << ((nSelect == 0) ? "body" : "reply") << ":" << m_data[nSelect].size() << endl; m_vecKeyword.clear(); } } diff --git a/FilterProcess/sfilteralgorithm.h b/FilterProcess/sfilteralgorithm.h index 04cd1a8..de3a38b 100644 --- a/FilterProcess/sfilteralgorithm.h +++ b/FilterProcess/sfilteralgorithm.h @@ -4,7 +4,8 @@ #include "../common.h" class QString; class QStringList; -class SFilterAlgorithm +class SInitializer; +class SFilterAlgorithm { private: QVector m_vecKeyword; diff --git a/FilterProcess/sfilterprocess.cpp b/FilterProcess/sfilterprocess.cpp index 4f64bb7..dab8edb 100644 --- a/FilterProcess/sfilterprocess.cpp +++ b/FilterProcess/sfilterprocess.cpp @@ -41,6 +41,7 @@ bool SFilterProcess::run() } case E_PROCSS_TYPE_CATEGORY_MAKE: { + m_SInitializer.insertCategoryLog("FilterGroupName: " + process.m_strFilterGroupName); switch(process.m_nServiceNum) { case E_SERVICE_INFLUENCER: @@ -73,38 +74,47 @@ bool SFilterProcess::run() } case E_PROCSS_TYPE_SEND: { - m_SConsumerMarketer.makeTable(m_SDatagroup); - m_SConsumerCheckList.makeTable(m_SDatagroup); - m_SDatagroup.makeTable(); + if (m_SInitializer.isUpload()) + { + m_SConsumerMarketer.makeTable(m_SDatagroup); + m_SConsumerCheckList.makeTable(m_SDatagroup); + m_SDatagroup.makeTable(); - //m_SConsumer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_CONSUMER)); - //m_SInfluencer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_INFLUENCER)); - //m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER)); - //m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE)); + //m_SConsumer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_CONSUMER)); + //m_SInfluencer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_INFLUENCER)); + //m_SSpammer.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_SPAMMER)); + //m_SPowercafe.makeOverallCategory(m_SInitializer.getAllCategoryNum(E_SERVICE_POWERCAFE)); - m_SConsumer.makeTable(m_SDatagroup); - m_SInfluencer.makeTable(m_SDatagroup); - m_SSpammer.makeTable(m_SDatagroup); - m_SPowercafe.makeTable(m_SDatagroup); + m_SConsumer.makeTable(m_SDatagroup); + m_SInfluencer.makeTable(m_SDatagroup); + m_SSpammer.makeTable(m_SDatagroup); + m_SPowercafe.makeTable(m_SDatagroup); - 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_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_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_nCompany = 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"); + } break; } } diff --git a/FilterProcess/sinfluencer.cpp b/FilterProcess/sinfluencer.cpp index 0a64cae..d25bcea 100644 --- a/FilterProcess/sinfluencer.cpp +++ b/FilterProcess/sinfluencer.cpp @@ -99,6 +99,7 @@ bool SInfluencer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLi for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) bFiltered[i] = false; _datagroup.copyData(vecData); + m_pSInitializer->insertCategoryLog(QString("Influencer Category: ") + m_pSInitializer->getCategoryName(_nCategory)); foreach (SInitializer::stFilter filter, _listFilter) { switch(filter.m_nType) @@ -122,9 +123,12 @@ bool SInfluencer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLi m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); break; } + m_pSInitializer->insertCategoryLog("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("CategoryNum:") + QString::number(_nCategory) + ",(" + + 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)" ); const int *anColumn = m_pSInitializer->getColumnIntArray(); if (bFiltered[SInitializer::E_ARTICLE_BODY]) diff --git a/FilterProcess/sinitializer.cpp b/FilterProcess/sinitializer.cpp index 22b509b..8de7fdc 100644 --- a/FilterProcess/sinitializer.cpp +++ b/FilterProcess/sinitializer.cpp @@ -98,9 +98,10 @@ bool SInitializer::enableSettings(QSqlDatabase& db, int _nMode) void SInitializer::updateWebDBInfoState(QSqlDatabase &_db, int _nCompany, QString _strStatus) { QString strQuery = "update dbinfo set " - "status = '" + _strStatus + "' " + "info = '" + _strStatus + "' " "where company_num = " + QString::number(_nCompany); - _db.exec(strQuery.toUtf8()); + QSqlQuery query(_db); + query.exec(strQuery); } void SInitializer::updateWebDBInfoComplete(QSqlDatabase _db, QString _mindate, QString _maxdate, QString _lastupdate, int _bodycount, int _replycount, int _nCompany) @@ -148,6 +149,32 @@ bool SInitializer::initDays() return true; } +bool SInitializer::initUpload() +{ + QSettings settings(QString("setup.ini"), QSettings::IniFormat); + settings.setIniCodec("UTF-8"); + settings.beginGroup(QString("settings")); + + if (settings.childKeys().size() == 0) + { + m_bUpload = true; + return true; + } + + QString strOk = settings.value("upload", "o").toString().trimmed(); + if (strOk.startsWith('o', Qt::CaseInsensitive)) + m_bUpload = true; + else + m_bUpload = false; + settings.endGroup(); + return true; +} + +bool SInitializer::isUpload() +{ + return m_bUpload; +} + bool SInitializer::initSpammer() { QSettings settings(QString("setup.ini"), QSettings::IniFormat); @@ -239,6 +266,7 @@ bool SInitializer::init(const QString& _strFilterProcessGroupID, const QString& b_ok &= initCategory(); b_ok &= initConsumerMarketer(); b_ok &= initConsumerCheckList(); + b_ok &= initUpload(); /* if (!b_ok) @@ -259,7 +287,7 @@ bool SInitializer::initInfluencer() bool SInitializer::initFilterProcess() { - QString strQuery = QString("select filterprocess_type,datagroup_id,filtergroup_id,company_num,category_num,filterprocess_order,service_num " + 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); QSqlQuery query(m_sDBManager[SDBManager::E_DATABASE_DATA]); @@ -281,6 +309,7 @@ bool SInitializer::initFilterProcess() stfilterprocess.m_nCategoryNum = query.value(4).toInt(); stfilterprocess.m_nFilterProcessOrder = query.value(5).toInt(); stfilterprocess.m_nServiceNum = query.value(6).toInt(); + stfilterprocess.m_strFilterGroupName = query.value(7).toString(); m_listFilterProcess.append(stfilterprocess); } @@ -585,6 +614,24 @@ void SInitializer::insertLog(const QString& _strMsg) const file.close(); } +void SInitializer::insertCategoryLog(const QString& _strMsg) const +{ + /* + cout << "["; + cout << m_stFilterProcessGroup.m_strFilterProcessGroupName.toStdString(); + cout << "] "; + cout << _strMsg.toStdString() << endl; + */ + + QFile file(m_stFilterProcessGroup.m_strFilterProcessGroupName + "_category." + QDate::currentDate().toString(Qt::ISODate)+".log"); + if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) + return; + + QTextStream out(&file); + out << QTime::currentTime().toString("[hh:mm:ss] ") << _strMsg << "\n"; + file.close(); +} + QSqlDatabase SInitializer::getDatabase(const QString& _dbName) const { return m_sDBManager[_dbName]; diff --git a/FilterProcess/sinitializer.h b/FilterProcess/sinitializer.h index 35ec7b2..dbd16e4 100644 --- a/FilterProcess/sinitializer.h +++ b/FilterProcess/sinitializer.h @@ -31,6 +31,7 @@ private: bool initBlogPageNum(); bool initConsumerMarketer(); bool initConsumerCheckList(); + bool initUpload(); public: @@ -99,11 +100,13 @@ public: QString m_strPassword; QString m_strDBName; }; + struct stFilterProcessGroup { int m_nFilterProcessGroupID; QString m_strFilterProcessGroupName; }; + struct stInfluencerParam { double m_dBody; @@ -122,6 +125,7 @@ public: } } }; + struct stColumn { QStringList m_slColumn; @@ -132,6 +136,7 @@ public: m_anColumn[i] = -1; } }; + struct stFilterProcess { int m_nDatagroupID; @@ -141,6 +146,7 @@ public: int m_nFilterProcessType; int m_nCompanyNum; int m_nServiceNum; + QString m_strFilterGroupName; }; struct stFilter @@ -154,6 +160,7 @@ public: m_nFilterGroupID = -1; } }; + struct stPlatform { QMap m_mapPlatformName; @@ -184,10 +191,12 @@ private: QMap m_mapConsumerMaketers; QMap m_mapConsumerCheckListUser; QStringList m_slConsumerCheckList; + bool m_bUpload; public: bool init(const QString& _strFilterProcessGroupID, const QString& _strFilterProcessGroupName); void insertLog(const QString& _strMsg) const; + void insertCategoryLog(const QString& _strMsg) const; QSqlDatabase getDatabase(const QString& _dbName) const; QSqlDatabase getDatabase(const SDBManager::E_DATABASE& _eDatabase) const; int getDataGroupNumber() const; @@ -216,6 +225,7 @@ public: QMap getConsumerMaketer(); QStringList getConsumerCheckList(); QMap getConsumerCheckListUser(); + bool isUpload(); //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); diff --git a/FilterProcess/spowercafe.cpp b/FilterProcess/spowercafe.cpp index 6549602..b8cc5db 100644 --- a/FilterProcess/spowercafe.cpp +++ b/FilterProcess/spowercafe.cpp @@ -100,6 +100,7 @@ bool SPowercafe::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLis for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) bFiltered[i] = false; _datagroup.copyData(vecData); + m_pSInitializer->insertCategoryLog(QString("PowerCafe Category: ") + m_pSInitializer->getCategoryName(_nCategory)); foreach (const SInitializer::stFilter& filter, _listFilter) { switch(filter.m_nType) @@ -123,9 +124,12 @@ bool SPowercafe::makeCategory(SDatagroup &_datagroup, int _nCategory, const QLis m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); break; } + m_pSInitializer->insertCategoryLog("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("CategoryNum:") + QString::number(_nCategory) + ",(" + + 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)" ); const int *anColumn = m_pSInitializer->getColumnIntArray(); if (bFiltered[SInitializer::E_ARTICLE_BODY]) diff --git a/FilterProcess/sservice.h b/FilterProcess/sservice.h index a88c969..3f4e80d 100644 --- a/FilterProcess/sservice.h +++ b/FilterProcess/sservice.h @@ -2,7 +2,7 @@ #define SSERVICE #include "sinitializer.h" #include "sdatagroup.h" - +#include class SService { protected: @@ -14,6 +14,7 @@ public: virtual bool makeCategory(SDatagroup &_datagroup, int _nCategory, const QList &_listFilter) = 0; virtual bool makeOverallCategory(int _categoryNum) = 0; virtual bool makeTable(SDatagroup &_datagroup) = 0; + QString convertJsonToStr(int _nSelect, const QString& _strJson); }; #endif // SSERVICE diff --git a/FilterProcess/sspammer.cpp b/FilterProcess/sspammer.cpp index 89cd2ac..b0f9cf9 100644 --- a/FilterProcess/sspammer.cpp +++ b/FilterProcess/sspammer.cpp @@ -93,6 +93,7 @@ bool SSpammer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList< for (int i = 0; i < SInitializer::E_ARTICLE_MAX; i++) bFiltered[i] = false; _datagroup.copyData(vecData); + m_pSInitializer->insertCategoryLog(QString("Spammer Category: ") + m_pSInitializer->getCategoryName(_nCategory)); foreach (const SInitializer::stFilter& filter, _listFilter) { switch(filter.m_nType) @@ -116,9 +117,12 @@ bool SSpammer::makeCategory(SDatagroup &_datagroup, int _nCategory, const QList< m_SFilterAlgorithm.FilterCounter(vecData, bFiltered, filter.m_vData.toString()); break; } + m_pSInitializer->insertCategoryLog("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("CategoryNum:") + QString::number(_nCategory) + ",(" + + 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)" ); const int *anColumn = m_pSInitializer->getColumnIntArray(); if (bFiltered[SInitializer::E_ARTICLE_BODY])