選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 
 

149 行
5.3 KiB

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