ZTStats/Sources/LogMgr.h

148 lines
4.0 KiB
C++

/*******************************************************************************
* *
* Société de Transports de Montréal. *
* 2012 - 2013 *
* *
* Projet Zones Tests *
* *
* *
* *
*******************************************************************************/
/*
Description:
Description du fichier si nécessaire.
*/
/* ************************************************************************** */
/* Revision:
### YYYMMDD JFM
Verision d'origine.
### YYYYMMDD Description du besoin ou du bug
Description du changement.
*/
/* ************************************************************************** */
#ifndef LOGMGR_H
#define LOGMGR_H
#include "ZTData.h"
#include "GlobalDefine.h"
#include <QList>
#include <QDir>
#include <QTimer>
#include <QReadWriteLock>
#include "DirParserThread.h"
class CLogElement
{
public:
unsigned int mZTLogType;
virtual ~CLogElement();
};
//QDataStream &operator<<(QDataStream &out, const CLogElement &source);
//QDataStream &operator>>(QDataStream &in, CLogElement &dest);
class CZT1LogElement : public CLogElement
{
public:
CZT1LogElement(){mZTLogType=ZT1_LOG_TYPE;}
~CZT1LogElement();
QDateTime mPassageDateTime;
QVector<CZT1LogData*> mZTLogData;
QVector<CZTDetectionData*> mZTDetections;
quint32 mTrainType;
quint32 mNbElements;
quint64 mThreadDataStartTime, mThreadDataEndTime;
QString mLogFileName;
qreal mMeanSpeed;
CZT1FlagsData mFlags;
QString mStationName;
bool mFileProtected;
int mFileVersion;
bool mDetectionFlagsValid;
};
//QDataStream &operator<<(QDataStream &out, const CZT1LogElement &source);
//QDataStream &operator>>(QDataStream &in, CZT1LogElement &dest);
class CZT2LogElement : public CLogElement
{
public:
CZT2LogElement(){mZTLogType = ZT2_LOG_TYPE;}
~CZT2LogElement();
QDateTime mPassageDateTime;
QVector<CZT2LogData*> mZTLogData;
QVector<CZTDetectionData*> mZTDetections;
QString mLogFileName;
quint32 mNbElements;
QString mStationName;
CZT2FlagsData mFlags;
bool mFileProtected;
bool mDetectionFlagsValid;
};
class COutilZT;
class CLogMgr : public QObject
{
Q_OBJECT
public:
CLogMgr();
~CLogMgr();
COutilZT *mProgramHandle;
unsigned int GetLogsCount();
QList<CLogElement*> *GetLogsList();
unsigned int ParseLogs(bool RebuildDatabase = false, bool KeepData = false);
unsigned int ParseNewLog(QString FileName, bool KeepData = false);
unsigned int ParseImportedLogs(QStringList *NewLogFiles);
CLogElement* LoadLogData(CLogElement * Element);
unsigned int FreeLogData(CLogElement * Element);
unsigned int DeleteLog(int LogIndex);
void SetLogDataDir(QString Dir){mLogDataDir = Dir;}
bool ParseNextLog();
unsigned int SaveDatabaseFile();
unsigned int RebuildDatabaseFile();
unsigned int ProtectLogElementFile(bool IsProtected, CLogElement *Element);
QTimer *mDatabaseParsingTimer;
QDir GetBaseLogDataDir(){return QDir(mLogDataDir);}
private:
CDirParserThread *mDirParserWorkerThread;
QThread *mDirParserThread;
QList<CLogElement*> mPassagesList;
unsigned int DestroyLogList();
int ParseDir(QDir dir, bool KeepData = false);
QFileInfoList mLogsFilelist;
unsigned int mLogsFileIndex;
QString mLogDataDir;
bool mParsingFinished;
unsigned int mDatabaseFileCounter;
bool mSaveDBFile;
public slots:
void NewLogParsed(QString,bool);
void NewLogParsed(CLogElement*);
void DirParsingFinished(int);
void ParsingTimerExpired();
void EmptyDirParsed();
void ThreadQuit();
void ThreadTerminated();
};
#endif // LOGMGR_H