필터 소스코드 정리

This commit is contained in:
mjjo
2017-08-08 12:20:01 +09:00
parent 616c27a800
commit fc266404c8
27 changed files with 3717 additions and 6189 deletions

View File

@@ -12,7 +12,6 @@ CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp \
sdbmanager.cpp \
sinitializer.cpp \

View File

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

View File

@@ -350,33 +350,6 @@ str += QString::number(stbody.sharecount) + ",";
return true;
}
void SConsumer::SReplyConsumerMap::makeTable(SDatagroup &_datagroup, const QMap<int, stReal> &_mapCategory)
{
int num = 0;
const QStringList* orderedUrl = _datagroup.getOrderedUrl();
for (QMap<int, stReal>::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<int, SDatagroup::stReply>* mapReply = _datagroup.getstReply(strUrl);
for(QMap<int, SDatagroup::stReply>::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)

View File

@@ -7,179 +7,134 @@
class SConsumer:public SService
{
public:
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> 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<QDate, int> m_mapBodyBuzz;
QMap<QDate, int> m_mapReplyBuzz;
};
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
};
class SBodyConsumerMap
{
private:
SInitializer *m_pSInitializer;
QList<stBodyConsumerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stReplyConsumerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stStatsConUserBuzzybyday> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stStatsJson> 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<int, stReal>& _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<int, stReal> 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<QDate, int> m_mapBodyBuzz;
QMap<QDate, int> m_mapReplyBuzz;
};
class SBodyConsumerMap
{
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stBodyConsumerMap> m_listMap;
};
class SStatsJson
{
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
bool SaveDataFile(const int &_nCompany);
void clear(){ m_listMap.clear(); }
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> 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<SInitializer::stFilter> &_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<SInitializer::stFilter> &_listFilter);
virtual bool makeOverallCategory(int _nCategory);
virtual bool makeTable(SDatagroup &_datagroup);
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> 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<SInitializer::stFilter> &_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<SInitializer::stFilter> &/*_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

View File

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

View File

@@ -11,52 +11,52 @@
struct stCountInfo
{
int allCount;
int bodyCount;
int replyCount;
int allCount;
int bodyCount;
int replyCount;
};
struct stConsumerCategoryStatistics
{
QString categoryName;
QMap<QString, stCountInfo> mapCountInfoOfDate;
QString categoryName;
QMap<QString, stCountInfo> mapCountInfoOfDate;
};
class SCousumerStatistics
{
private:
QJsonArray m_BodyJsonArray;
QJsonArray m_ReplyJsonArray;
QJsonArray m_AllJsonArray;
QJsonArray m_BodyJsonArray;
QJsonArray m_ReplyJsonArray;
QJsonArray m_AllJsonArray;
QList<QString> m_listBanCategoryName;
QList<QString> m_listBanCategoryName;
QList<stConsumerCategoryStatistics> m_listConsumerCategoryStatistics;
QList<stConsumerCategoryStatistics> 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

View File

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

View File

@@ -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<int> 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<int> 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<int> 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<int> 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<int> realbycategorynum;
int platformname_num;
int platformform_num;
QString platformname_name;
QString platformform_form;
QString nickname_nickname;
QString nickname_exnickname;
QString body_date;
//QSet<int> 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<stBody> m_listBody;
SInitializer *m_pSInitializer;
QMap<QString, stBody> 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<int>& _realbycategorynum);
QString vecToString(const QSet<int> &_realbycategorynum);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
stBody* get(const QString& _url);
void clear();
// int getBodyCount();
// int getUserCount();
// QMap<QString, int> getMapBodyCountOfPlatform();
// QMap<QString, int> getMapUserCountOfPlatform();
};
int num;
QString id;
QString exid;
QString title;
QString url;
int platformname_num;
int platformform_num;
};
class SReply
{
private:
//QList<stReply> m_listReply;
SInitializer *m_pSInitializer;
QMap<QString, QMap<int, stReply> > 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<int, stReply>* get(const QString& _url);
QString vecToString(const QVector<int>& _realbycategorynum);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
void clear();
};
class SId
{
private:
QMap<QString, stId> 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<QString, stNickname> 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<QString, stCommunity> 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<QString> m_setFilteredUrl;
int num;
QString id;
int platformname_num;
};
QStringList m_slOrderedBodyUrl;
QMap<QString, QMap<int, QStringList> > m_mapReply;
QMap<QString, QStringList> m_mapBody;
QMap<QString, int> m_mapBodyCountOfPlatform;
QMap<QString, int> m_mapUserCountOfPlatform;
QMap<stProfileurlKey, QStringList*> 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<int>& _realbycategorynum);
QString vecToString(const QSet<int> &_realbycategorynum);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
stBody* get(const QString& _url);
void clear();
private:
SInitializer *m_pSInitializer;
QMap<QString, stBody> 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<int, stReply>* get(const QString& _url);
QString vecToString(const QVector<int>& _realbycategorynum);
void setInitializer(SInitializer &initializer){ m_pSInitializer = &initializer; }
void clear();
private:
SInitializer *m_pSInitializer;
QMap<QString, QMap<int, stReply> > 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<QString, stId> 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<QString, stNickname> 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<QString, stCommunity> 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<QStringList> *_data);
const QMap<QString, QStringList>* getmapBody();
const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey);
const QMap<QString, QMap<int, QStringList> >* getmapReply();
const stBody* getstBody(const QString& _strUrl);
const stReply* getstReply(const QString& _strUrl, const int &_order);
const QMap<int, stReply>* 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<QString, int> getMapBodyCountOfPlatform();
QMap<QString, int> 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<QStringList> *_data);
const QMap<QString, QStringList>* getmapBody();
const QStringList* getmapBody(const stProfileurlKey& _stprofileurlkey);
const QMap<QString, QMap<int, QStringList> >* getmapReply();
const stBody* getstBody(const QString& _strUrl);
const stReply* getstReply(const QString& _strUrl, const int &_order);
const QMap<int, stReply>* 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<QString, int> getMapBodyCountOfPlatform();
QMap<QString, int> getMapUserCountOfPlatform();
private:
void init();
void setloadQuery(QString _astrQuery[], int _nDatagroupNumber);
void makeProfile(const QStringList& _strList);
void makeBodyCountOfPlatform();
void makeUserCountOfPlatform();
SInitializer* m_pSInitializer;
QSet<QString> m_setFilteredUrl;
QStringList m_slOrderedBodyUrl;
QMap<QString, QMap<int, QStringList> > m_mapReply;
QMap<QString, QStringList> m_mapBody;
QMap<QString, int> m_mapBodyCountOfPlatform;
QMap<QString, int> m_mapUserCountOfPlatform;
QMap<stProfileurlKey, QStringList*> 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

View File

@@ -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<E_DATABASE, QString> m_mapDBname;
QMap<E_DATABASE, QString> m_mapDBname;
};
#endif // SDBMANAGER

View File

@@ -1,24 +1,25 @@
#ifndef SFILTERALGORITHM
#define SFILTERALGORITHM
#include <QVector>
#include "../common.h"
class QString;
class QStringList;
class SInitializer;
class SFilterAlgorithm
{
private:
QVector <SKeyword> m_vecKeyword;
public:
void FilterSearch(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterCounter(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterReplace(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterDate(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn);
void FilterLength(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterSearch(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterCounter(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterReplace(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
void FilterDate(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson, int _nDateColumn);
void FilterLength(QVector<QStringList> *m_data, bool *m_bDataFlag, QString _strJson);
private:
QVector <SKeyword> m_vecKeyword;
};
#endif // SFILTERALGORITHM

View File

@@ -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<SInitializer::stFilterProcess> 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<SInitializer::stFilterProcess> 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;
}

View File

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

View File

@@ -127,7 +127,7 @@ void SHttpSender::ReadData()
*/
}
void SHttpSender::error(QAbstractSocket::SocketError error)
void SHttpSender::error(QAbstractSocket::SocketError /*error*/)
{
exit(0);
}

View File

@@ -1,26 +1,29 @@
#ifndef SHTTPSENDER_H
#define SHTTPSENDER_H
#include <QObject>
#include <QtNetwork>
#include <QtNetwork/QTcpSocket>
#include <QSqlDatabase>
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

View File

@@ -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<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> 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<QString, QList<SDatagroup::stReply> > interactions;
int interactionsTotalReplyCount;
int interactionsTotalCount;
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> 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<QString, QList<SDatagroup::stReply> > 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<stReplyInfluencerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stInfluencer> m_listMap;
QMap<int, QList<stInfluencer> > m_mapInfluencerOfCategory;
QMap<int, QList<int> > m_mapInfluencerGroupInfo;
QMap<int, QMap<int, QList<stInfluencer> > > m_mapInfluencerOfGroup;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stInfluencer>& getInfluencerList();
int getInfluencerCount();
QMap<QString, int> getInfluencerCountOfPlatform();
int getInfluencerGroupNum(int _nCategoryNum);
void setInfluencerValueWeight();
void processDuplicatedInfluencer();
QMap<QString, QList<double> > makeInfluencerValuesOfId(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory);
QMap<QString, QList<double> > filterInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void sortInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void copyInfluencerFromGroupToList();
void sortInfluencerByValue();
void setInfluecnerRank();
void setDuplicatedInfluencerFlag(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory, QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void setGroupDuplicatedInfluencerFlag(QMap<QString, int> &_mapCountOfGroupDuplicatedId);
QMap<QString, int> makeCountOfGroupDuplicatedId();
};
};
class SStatsInfBloggerRank
{
private:
SInitializer *m_pSInitializer;
QList<stStatsInfBloggerRank> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stStatsInfBloggerBuzzbyday> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stBodyInfluencerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
};
};
class SInfluencerWeight
{
private:
QMap<int,double> m_mapBodyWeight;
QMap<int,double> m_mapReplyWeight;
QMap<int,double> 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<int, double>& _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<QString, int> m_mapBodyCountOfPlatform;
QMap<QString, int> 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<int, int> m_mapUserCountOfGroup;
QMap<int, QString> m_mapPlatformOfGroup;
const QMap<int, QList<int> > m_mapCategorysOfGroup;
const QList<SInfluencer::stInfluencer>& m_listInfluencer;
};
private:
void calculateUserCount();
void calculatePlatform();
QString getMaxBodyCountPlatform(QMap<QString, int> _mapBodyCountOfPlatform);
public:
SGroupStatistics(QMap<int, QList<int> > _mapCategorysOfGroup, QList<SInfluencer::stInfluencer>& _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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
class SStatsJson
{
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> m_listMap;
private:
SInitializer *m_pSInitializer;
QList<stReplyInfluencerMap> 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<int, stReal>& _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<int, stReal>& _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<stInfluencer>& getInfluencerList();
int getInfluencerCount();
QMap<QString, int> getInfluencerCountOfPlatform();
int getInfluencerGroupNum(int _nCategoryNum);
void setInfluencerValueWeight();
void processDuplicatedInfluencer();
QMap<QString, QList<double> > makeInfluencerValuesOfId(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory);
QMap<QString, QList<double> > filterInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void sortInfluencerValuesOfId(QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void copyInfluencerFromGroupToList();
void sortInfluencerByValue();
void setInfluecnerRank();
void setDuplicatedInfluencerFlag(QMap<int, QList<stInfluencer> > &_mapInfluencersOfCategory, QMap<QString, QList<double> > &_mapInfluencerValuesOfId);
void setGroupDuplicatedInfluencerFlag(QMap<QString, int> &_mapCountOfGroupDuplicatedId);
QMap<QString, int> makeCountOfGroupDuplicatedId();
class SIdrankbyinteraction
{
private:
QJsonArray m_interactorsJson;
QJsonArray m_pickedInteractorsJson;
private:
SInitializer *m_pSInitializer;
QList<stInfluencer> m_listMap;
QMap<int, QList<stInfluencer> > m_mapInfluencerOfCategory;
QMap<int, QList<int> > m_mapInfluencerGroupInfo;
QMap<int, QMap<int, QList<stInfluencer> > > 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<int, stReal>& _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<stStatsInfBloggerRank> m_listMap;
};
class SStatsInfBloggerBuzzbyday
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stStatsInfBloggerBuzzbyday> m_listMap;
};
class SBodyInfluencerMap
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stBodyInfluencerMap> m_listMap;
};
class SInfluencerWeight
{
public:
void calculateWeight();
void insert(stInfluencer &_val);
double getInfluenceValue(stInfluencer &_val);
private:
QMap<int,double> m_mapBodyWeight;
QMap<int,double> m_mapReplyWeight;
QMap<int,double> m_mapLikeWeight;
const static double m_multipleValue;
void calculateSectionWeight(QMap<int, double>& _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<QString, int> m_mapBodyCountOfPlatform;
QMap<QString, int> m_mapUserCountOfPlatform;
int m_nTotalBodyCount;
int m_nTotalUserCount;
};
class SGroupStatistics
{
public:
SGroupStatistics(QMap<int, QList<int> > _mapCategorysOfGroup, QList<SInfluencer::stInfluencer>& _listInfluencer) :
m_mapCategorysOfGroup(_mapCategorysOfGroup), m_listInfluencer(_listInfluencer) {}
void calculateGroupStatistics();
QString getPlatform(int _nGroupNum);
private:
QMap<int, int> m_mapUserCountOfGroup;
QMap<int, QString> m_mapPlatformOfGroup;
const QMap<int, QList<int> > m_mapCategorysOfGroup;
const QList<SInfluencer::stInfluencer>& m_listInfluencer;
void calculateUserCount();
void calculatePlatform();
QString getMaxBodyCountPlatform(QMap<QString, int> _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<stStatsJson> 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<QString> idcount;
stInfluenceBuzz():bodycount(0), replycount(0) {}
};
struct stInfluenceBuzz
{
stInfluenceBuzz():bodycount(0), replycount(0) {}
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> 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<QString> 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<SInitializer::stFilter> &_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<SInitializer::stFilter> &_listFilter);
virtual bool makeOverallCategory(int _categoryNum);
virtual bool makeTable(SDatagroup &_datagroup);
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> m_mapCategory;
SBodyInfluencerMap m_SBodyInfluencerMap;
SReplyInfluencerMap m_SReplyInfluencerMap;
STInfluencer m_STInfluencer;
SStatsJson m_SStatsJson;
};

View File

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

View File

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

View File

@@ -1,5 +1,6 @@
#ifndef SINITIALIZER
#define SINITIALIZER
#include "sdbmanager.h"
#include <QList>
#include <QMap>
@@ -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<QString, int> m_mapPlatformName;
QMap<QString, int> 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<QString, int> m_mapPlatformName;
QMap<QString, int> 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<stFilterProcess> getFilterProcess();
QMap<int, QList<stFilter> > getFilterGroup();
const double* getSpammerParam() const;
QList<stFilter> getFilterGroup(int _nFilterGroupId);
int getPlatformForm(const QString &_form);
int getPlatformName(const QString &_name);
QMap<int, int>* 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<int, QString> getConsumerMaketer();
QStringList getConsumerCheckList();
QMap<int, QString> getConsumerCheckListUser();
bool isUpload();
QMap<int, QList<int> > 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<stFilterProcess> m_listFilterProcess;
QMap<int, QList<stFilter> > m_mapFilterGroup; // key : filtergroupid
int m_nDataGroupNumber;
stPlatform m_stPlatform;
//QMap<int, int> m_mapConsumerCategory;
int m_nConsumerAllCategory;
int m_anAllCategory[E_SERVICE_MAX];
QMap<int, QString> m_mapCategory;
int m_nBlogPageNum;
QMap<int, QString> m_mapConsumerMaketers;
QMap<int, QString> m_mapConsumerCheckListUser;
QMap<int, QList<int> > 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<stFilterProcess> m_listFilterProcess;
QMap<int, QList<stFilter> > m_mapFilterGroup; // key : filtergroupid
int m_nDataGroupNumber;
stPlatform m_stPlatform;
int m_nConsumerAllCategory;
int m_anAllCategory[E_SERVICE_MAX];
QMap<int, QString> m_mapCategory;
int m_nBlogPageNum;
QMap<int, QString> m_mapConsumerMaketers;
QMap<int, QString> m_mapConsumerCheckListUser;
QMap<int, QList<int> > 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<stFilterProcess> getFilterProcess();
QMap<int, QList<stFilter> > getFilterGroup();
const double* getSpammerParam() const;
QList<stFilter> getFilterGroup(int _nFilterGroupId);
int getPlatformForm(const QString &_form);
int getPlatformName(const QString &_name);
QMap<int, int>* 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<int, QString> getConsumerMaketer();
QStringList getConsumerCheckList();
QMap<int, QString> getConsumerCheckListUser();
bool isUpload();
QMap<int, QList<int> > 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

File diff suppressed because it is too large Load Diff

View File

@@ -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<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
};
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> 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<stPowercafe> m_listMap;
};
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stStatsPowCafeRank> m_listMap;
};
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stBodyPowercafeMap> 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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
};
};
class SReplyPowercafeMap
{
private:
SInitializer *m_pSInitializer;
QList<stReplyPowercafeMap> m_listMap;
class STPowercafe
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
};
private:
SInitializer *m_pSInitializer;
QList<stPowercafe> 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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
class SStatsJson
{
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
void clear(){ m_listMap.clear(); }
};
private:
SInitializer *m_pSInitializer;
QList<stStatsPowCafeRank> 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<int, stReal>& _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<stBodyPowercafeMap> 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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stReplyPowercafeMap> m_listMap;
};
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> 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<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
void clear(){ m_listMap.clear(); }
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> 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<SInitializer::stFilter> &_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<SInitializer::stFilter> &_listFilter);
virtual bool makeOverallCategory(int _categoryNum);
virtual bool makeTable(SDatagroup &_datagroup);
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> m_mapCategory;
SBodyPowercafeMap m_SBodyPowercafeMap;
SReplyPowercafeMap m_SReplyPowercafeMap;
STPowercafe m_STPowercafe;
SStatsJson m_SStatsJson;
};
#endif // SPOWERCAFE

View File

@@ -1,12 +1,12 @@
#ifndef SSERVICE
#define SSERVICE
#include "sinitializer.h"
#include "sdatagroup.h"
#include <QString>
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

File diff suppressed because it is too large Load Diff

View File

@@ -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<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
};
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> 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<QString> 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<QDate, int> m_mapBodyBuzz;
QMap<QDate, int> 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<stSpammer> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& 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<QString> nickname;
};
class SStatsSpaSpammerRank
{
private:
SInitializer *m_pSInitializer;
QList<stStatsSpaSpammerRank> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _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<stBodySpammerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory ,QSet<int>& 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<stReplySpammerMap> m_listMap;
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& 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<QDate, int> m_mapBodyBuzz;
QMap<QDate, int> 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<stStatsJson> m_listMap;
public:
void setInitiaizer(SInitializer &_SInitializer) { m_pSInitializer = &_SInitializer; }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
void makeTableBuzz(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
void makeTableRank(SDatagroup &_datagroup, const QMap<int, stReal>& _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<int, stReal>& _mapCategory, QSet<int>& setSpammer);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stSpammer> m_listMap;
};
class SStatsSpaSpammerRank
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stStatsSpaSpammerRank> m_listMap;
};
class SBodySpammerMap
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory ,QSet<int>& setSpammer);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stBodySpammerMap> m_listMap;
};
class SReplySpammerMap
{
public:
void setInitiaizer(SInitializer &_initializer){ m_pSInitializer = &_initializer; }
void clear(){ m_listMap.clear(); }
void makeTable(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory, QSet<int>& setSpammer);
bool uploadData(QSqlDatabase &_db, const int &_nCompany);
bool changeTable(QSqlDatabase &_db, const int &_nCompany);
private:
SInitializer *m_pSInitializer;
QList<stReplySpammerMap> 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<int, stReal>& _mapCategory);
void makeTableBuzz(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
void makeTableRank(SDatagroup &_datagroup, const QMap<int, stReal>& _mapCategory);
bool uploadData(QSqlDatabase& _db, const int &_nCompany);
void clear(){ m_listMap.clear(); }
private:
SInitializer *m_pSInitializer;
QList<stStatsJson> m_listMap;
};
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> m_mapCategory;
STSpammer m_STSpammer;
//SStatsSpaSpammerRank m_SStatsSpaSpammerRank;
SBodySpammerMap m_SBodySpammerMap;
SReplySpammerMap m_SReplySpammerMap;
QSet<int> 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<SInitializer::stFilter> &_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<SInitializer::stFilter> &_listFilter);
virtual bool makeOverallCategory(int _categoryNum);
virtual bool makeTable(SDatagroup &_datagroup);
private:
SFilterAlgorithm m_SFilterAlgorithm;
QMap<int, stReal> m_mapCategory;
STSpammer m_STSpammer;
SBodySpammerMap m_SBodySpammerMap;
SReplySpammerMap m_SReplySpammerMap;
QSet<int> m_setSpammer;
SStatsJson m_SStatsJson;
};
#endif // SSPAMMER