Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 

146 linhas
4.0 KiB

  1. /*******************************************************************************
  2. * *
  3. * Société de Transports de Montréal. *
  4. * 2012 - 2013 *
  5. * *
  6. * Projet Zones Tests *
  7. * *
  8. * *
  9. * *
  10. *******************************************************************************/
  11. /*
  12. Description:
  13. Description du fichier si nécessaire.
  14. */
  15. /* ************************************************************************** */
  16. /* Revision:
  17. ### YYYMMDD JFM
  18. Verision d'origine.
  19. ### YYYYMMDD Description du besoin ou du bug
  20. Description du changement.
  21. */
  22. /* ************************************************************************** */
  23. #ifndef LOGMGR_H
  24. #define LOGMGR_H
  25. #include "ZTData.h"
  26. #include "GlobalDefine.h"
  27. #include <QList>
  28. #include <QDir>
  29. #include <QTimer>
  30. #include <QReadWriteLock>
  31. #include "DirParserThread.h"
  32. class CLogElement
  33. {
  34. public:
  35. unsigned int mZTLogType;
  36. virtual ~CLogElement();
  37. };
  38. //QDataStream &operator<<(QDataStream &out, const CLogElement &source);
  39. //QDataStream &operator>>(QDataStream &in, CLogElement &dest);
  40. class CZT1LogElement : public CLogElement
  41. {
  42. public:
  43. CZT1LogElement(){mZTLogType=ZT1_LOG_TYPE;}
  44. ~CZT1LogElement();
  45. QDateTime mPassageDateTime;
  46. QVector<CZT1LogData*> mZTLogData;
  47. QVector<CZTDetectionData*> mZTDetections;
  48. quint32 mTrainType;
  49. quint32 mNbElements;
  50. quint64 mThreadDataStartTime, mThreadDataEndTime;
  51. QString mLogFileName;
  52. qreal mMeanSpeed;
  53. CZT1FlagsData mFlags;
  54. QString mStationName;
  55. bool mFileProtected;
  56. int mFileVersion;
  57. };
  58. //QDataStream &operator<<(QDataStream &out, const CZT1LogElement &source);
  59. //QDataStream &operator>>(QDataStream &in, CZT1LogElement &dest);
  60. class CZT2LogElement : public CLogElement
  61. {
  62. public:
  63. CZT2LogElement(){mZTLogType = ZT2_LOG_TYPE;}
  64. ~CZT2LogElement();
  65. QDateTime mPassageDateTime;
  66. QVector<CZT2LogData*> mZTLogData;
  67. QVector<CZTDetectionData*> mZTDetections;
  68. QString mLogFileName;
  69. quint32 mNbElements;
  70. QString mStationName;
  71. CZT2FlagsData mFlags;
  72. bool mFileProtected;
  73. };
  74. class COutilZT;
  75. class CLogMgr : public QObject
  76. {
  77. Q_OBJECT
  78. public:
  79. CLogMgr();
  80. ~CLogMgr();
  81. COutilZT *mProgramHandle;
  82. unsigned int GetLogsCount();
  83. QList<CLogElement*> *GetLogsList();
  84. unsigned int ParseLogs(bool RebuildDatabase = false, bool KeepData = false);
  85. unsigned int ParseNewLog(QString FileName, bool KeepData = false);
  86. unsigned int ParseImportedLogs(QStringList *NewLogFiles);
  87. CLogElement* LoadLogData(CLogElement * Element);
  88. unsigned int FreeLogData(CLogElement * Element);
  89. unsigned int DeleteLog(int LogIndex);
  90. void SetLogDataDir(QString Dir){mLogDataDir = Dir;}
  91. bool ParseNextLog();
  92. unsigned int SaveDatabaseFile();
  93. unsigned int RebuildDatabaseFile();
  94. unsigned int ProtectLogElementFile(bool IsProtected, CLogElement *Element);
  95. QTimer *mDatabaseParsingTimer;
  96. QDir GetBaseLogDataDir(){return QDir(mLogDataDir);}
  97. private:
  98. CDirParserThread *mDirParserWorkerThread;
  99. QThread *mDirParserThread;
  100. QList<CLogElement*> mPassagesList;
  101. unsigned int DestroyLogList();
  102. int ParseDir(QDir dir, bool KeepData = false);
  103. QFileInfoList mLogsFilelist;
  104. unsigned int mLogsFileIndex;
  105. QString mLogDataDir;
  106. bool mParsingFinished;
  107. unsigned int mDatabaseFileCounter;
  108. bool mSaveDBFile;
  109. public slots:
  110. void NewLogParsed(QString,bool);
  111. void NewLogParsed(CLogElement*);
  112. void DirParsingFinished(int);
  113. void ParsingTimerExpired();
  114. void EmptyDirParsed();
  115. void ThreadQuit();
  116. void ThreadTerminated();
  117. };
  118. #endif // LOGMGR_H