#ifndef YCHILDRENTHREAD_H
#define YCHILDRENTHREAD_H
#include "ymorpherethread.h"
#include <QStringList>

class ThreadFactory{
public:
    static YMorphereThread* getThread(QMap<QString, QString> mapParam);
};

class YBasicMThread:public YMorphereThread
{
    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);


    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;

protected:
    void run();
public:
    void parseParam();

};

class YOneDepthMThread:public YMorphereThread
{

    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);

    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    QString m_strCKeyword;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;
protected:
    void run();
public:
    void parseParam();
};

class YTwoDepthMThread:public YMorphereThread
{
    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);



    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    QString m_strCKeyword;
    QStringList m_slOneDepthKeys;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;

protected:
    void run();
public:
    void parseParam();

};

class YPlatformMThread:public YMorphereThread
{
    Q_OBJECT

private:
    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    QString m_strCKeyword;
    QStringList m_slOneDepthKeys;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;

protected:
    void run();
public:
    void parseParam();
};


class YPlatformOneMThread:public YMorphereThread
{
    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);



    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    QString m_strCKeyword;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;
protected:
    void run();
public:
    void parseParam();
};



class YIDMThread:public YMorphereThread
{
    Q_OBJECT
protected:
    void run();
public:
    void parseParam();
};

class YNNMatrixMThread:public YMorphereThread
{

    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);


    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_strMKeyword;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;

protected:
    void run();
public:
    void parseParam();
};

class YTwoDepthAMThread:public YMorphereThread
{
    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);

    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_slMorphereList;
    QStringList m_slMorphereList2;
    QStringList m_slMorphereListAll;
    QString m_strCKeyword;
    QStringList m_slOneDepthKeys;
    bool m_bDuplicate;
    QString m_strRecentPeriod;
    int m_nArticle;

protected:
    void run();
public:
    void parseParam();
};

class YCenterKeywordMThread:public YMorphereThread
{

    Q_OBJECT
private:
    //QString getWeeksInMonth(unsigned int _nDate);


    QString userdict;
    int m_nTitleBody;
    int m_nPeriod;
    unsigned int m_nDateStart;
    unsigned int m_nDateEnd;
    bool m_bDateAll;
    QStringList m_strCKeyword;
    int m_nCenterKeywordMethod;
    QString m_strRecentPeriod;
    int m_nArticle;
    int m_nFront;
    int m_nBack;


protected:
    void run();
public:
    void parseParam();
};


#endif // YCHILDRENTHREAD_H

