Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

165 строки
6.1 KiB

  1. #include "LogsHandler.h"
  2. #include "LogsSorterConfigData.h"
  3. #include "LogsSorter.h"
  4. #include <QDir>
  5. #include <QFileInfo>
  6. #include <QDate>
  7. CLogsHandler::CLogsHandler() : QObject()
  8. {
  9. mSortingConfigData = 0;
  10. mProgramPtr = 0;
  11. mLogsWatcher = new QFileSystemWatcher();
  12. mHandlerRunning = false;
  13. connect(mLogsWatcher,&QFileSystemWatcher::directoryChanged,this,&CLogsHandler::WatchedDirectoryChanged);
  14. }
  15. CLogsHandler::~CLogsHandler()
  16. {
  17. mLogsWatcher->removePaths(mLogsWatcher->directories());
  18. delete mLogsWatcher;
  19. }
  20. int CLogsHandler::SetSortingConfigData(CLogsSorterConfigData *ConfigData)
  21. {
  22. mSortingConfigData = ConfigData;
  23. mLogsWatcher->removePaths(mLogsWatcher->directories());
  24. if(QDir(ConfigData->mLogsSourceDirectory).exists())
  25. {
  26. mLogsWatcher->addPath(ConfigData->mLogsSourceDirectory);
  27. QString msg = QString("La surveillance est débutée pour le répertoire source %1").arg(ConfigData->mLogsSourceDirectory);
  28. qDebug(qPrintable(msg));
  29. mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::darkGreen);
  30. }
  31. else
  32. {
  33. QString msg = QString("Le répertoire source est inexistant. Vérifier la configuration ou activer le VPN");
  34. qDebug(qPrintable(msg));
  35. mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red);
  36. }
  37. return RET_OK;
  38. }
  39. int CLogsHandler::StartLogHandling()
  40. {
  41. mHandlerRunning = true;
  42. return RET_OK;
  43. }
  44. int CLogsHandler::StopLogHandling()
  45. {
  46. mHandlerRunning = false;
  47. return RET_OK;
  48. }
  49. int CLogsHandler::ParseWatchedDirectory()
  50. {
  51. return ParseWatchedDirectory(mSortingConfigData->mLogsSourceDirectory);
  52. }
  53. void CLogsHandler::WatchedDirectoryChanged(QString Path)
  54. {
  55. ParseWatchedDirectory(Path);
  56. }
  57. int CLogsHandler::ParseWatchedDirectory(QString Path)
  58. {
  59. QDir SourceDir(Path);
  60. QFileInfoList LogFiles = SourceDir.entryInfoList();
  61. const CLogsFilterData *Filter;
  62. for(int i = 0; i < LogFiles.size(); i++)
  63. {
  64. for(int j = 0; j < mSortingConfigData->mLogsFiltersList.size(); j++)
  65. {
  66. Filter = &mSortingConfigData->mLogsFiltersList[j];
  67. if(Filter->mIsFilterActive == true)
  68. {
  69. if(LogFiles.at(i).fileName().contains(Filter->mLogIdentificator) && //Le fichier contient le différentiateur comme LOGZT1, LOGZT2, BooleanData, etc.
  70. LogFiles.at(i).fileName().contains(Filter->mLogPrefix)) //ET le fichier contient le bon préfixe (identification de la station).
  71. {
  72. if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE)
  73. {
  74. QString msg= QString("Filtre trouvé pour le fichier %1").arg(LogFiles.at(i).fileName());
  75. qDebug(qPrintable(msg));
  76. QString DestinationDir = Filter->mLogDestination;
  77. if(Filter->mCreateDayDirectories == true)
  78. {
  79. DestinationDir.append("\\");
  80. DestinationDir.append(QDate::currentDate().toString("yyyyMMdd"));
  81. }
  82. QString FullDestinationPath = DestinationDir;
  83. QString DestFilename = LogFiles.at(i).fileName();
  84. FullDestinationPath.append("\\");
  85. DestFilename.remove(Filter->mLogPrefix);
  86. FullDestinationPath.append(DestFilename);
  87. if(!QDir(DestinationDir).exists()) //Créer le répertoire cible s'il n'exite pas déjà
  88. {
  89. QDir().mkdir(DestinationDir);
  90. }
  91. if(QFile::copy(LogFiles.at(i).absoluteFilePath(),FullDestinationPath))
  92. {
  93. QString msg = QString("Fichier %1 copié vers %2").arg(LogFiles.at(i).absoluteFilePath()).arg(FullDestinationPath);
  94. qDebug(qPrintable(msg));
  95. mProgramPtr->AddGeneralMsgTextRequest(msg);
  96. if(QFile::remove(LogFiles.at(i).absoluteFilePath()))
  97. {
  98. QString msg = QString("Fichier %1 effacé").arg(LogFiles.at(i).absoluteFilePath());
  99. qDebug(qPrintable(msg));
  100. mProgramPtr->AddGeneralMsgTextRequest(msg);
  101. }
  102. else
  103. {
  104. QString msg = QString("Impossible d'effacer le fichier %1").arg(LogFiles.at(i).absoluteFilePath());
  105. qDebug(qPrintable(msg));
  106. mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red);
  107. }
  108. }
  109. else
  110. {
  111. QString msg = QString("Impossible de copier %1 vers %2 (le fichier existe probablement déjà !)").arg(LogFiles.at(i).absoluteFilePath()).arg(FullDestinationPath);
  112. qDebug(qPrintable(msg));
  113. mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red);
  114. }
  115. }
  116. else if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE)
  117. {
  118. if(QFile::remove(LogFiles.at(i).absoluteFilePath()))
  119. {
  120. QString msg = QString("Fichier %1 effacé").arg(LogFiles.at(i).absoluteFilePath());
  121. qDebug(qPrintable(msg));
  122. mProgramPtr->AddGeneralMsgTextRequest(msg);
  123. }
  124. else
  125. {
  126. QString msg = QString("Impossible d'effacer le fichier %1").arg(LogFiles.at(i).absoluteFilePath());
  127. qDebug(qPrintable(msg));
  128. mProgramPtr->AddGeneralMsgTextRequest(msg);
  129. }
  130. }
  131. }
  132. }
  133. }
  134. }
  135. return RET_OK;
  136. }