Files
clients/FilterProcess/sspammer.h
2017-08-08 12:20:01 +09:00

232 lines
5.7 KiB
C++

#ifndef SSPAMMER
#define SSPAMMER
#include "sservice.h"
#include "sfilteralgorithm.h"
#include "sinitializer.h"
class QString;
class QStringList;
class SSpammer : public SService
{
public:
struct stReal
{
QSet<QString> m_setRealAllUrl;
QSet<QString> m_setRealBodyUrl;
QMap<QString, int> m_mapRealReplyUniqueUrl; //multiple
};
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
{
stStatsSpaSpammerRank():id_num(0),nicknamecount(0),bodycount(0),replycount(0),rank(0), spammervalue(0.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 stBodySpammerMap
{
stBodySpammerMap():num(0), body_num(0), id_num(0), category_num(0), realin(0), platformname_num(0){}
int num;
int body_num;
int id_num;
int category_num;
int realin;
QString date;
int platformname_num;
};
struct stReplySpammerMap
{
stReplySpammerMap():num(0), body_num(0), reply_num(0), id_num(0), category_num(0){}
int num;
int reply_num;
int body_num;
int id_num;
int category_num;
QString body_date;
};
struct stSpammerScore
{
stSpammerScore():body(0),reply(0), id_num(0){}
int body;
int reply;
int id_num;
QSet<QString> nickname;
};
struct stSpammerRank
{
stSpammerRank():value(0.0), platformform_num(1), id_num(0){}
double value;
int platformform_num;
QString id;
int id_num;
};
struct stBuzzy
{
int m_nCategory;
QMap<QDate, int> m_mapBodyBuzz;
QMap<QDate, int> m_mapReplyBuzz;
};
struct stStatsJson
{
stStatsJson() : company_num(0), servicenum(3), platformname_num(1), category_num(0){}
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;
};
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);
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