You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

131 rivejä
4.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("Le répertoire source %1 sous surveillance").arg(ConfigData->mLogsSourceDirectory);
  27. qDebug(qPrintable(msg));
  28. }
  29. else
  30. {
  31. QString msg = QString("Erreur, le répertoire source %1 n'existe pas").arg(ConfigData->mLogsSourceDirectory);
  32. }
  33. return 0;
  34. }
  35. int CLogsHandler::StartLogHandling()
  36. {
  37. mHandlerRunning = true;
  38. return 0;
  39. }
  40. int CLogsHandler::StopLogHandling()
  41. {
  42. mHandlerRunning = false;
  43. return 0;
  44. }
  45. void CLogsHandler::WatchedDirectoryChanged(QString Path)
  46. {
  47. ParseWatchedDirectory(Path);
  48. }
  49. int CLogsHandler::ParseWatchedDirectory(QString Path)
  50. {
  51. QDir SourceDir(Path);
  52. QFileInfoList LogFiles = SourceDir.entryInfoList();
  53. const CLogsFilterData *Filter;
  54. for(int i = 0; i < LogFiles.size(); i++)
  55. {
  56. for(int j = 0; j < mSortingConfigData->mLogsFiltersList.size(); j++)
  57. {
  58. Filter = &mSortingConfigData->mLogsFiltersList[j];
  59. if(LogFiles.at(i).fileName().contains(Filter->mLogIdentificator) && //Le fichier contient le différentiateur comme ZT1, ZT2, BooleanData, etc.
  60. LogFiles.at(i).fileName().contains(Filter->mLogPrefix)) //ET le fichier contient le bon préfixe (identification de la station).
  61. {
  62. if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE)
  63. {
  64. QString msg= QString("Filtre trouvé pour le fichier %1").arg(LogFiles.at(i).fileName());
  65. qDebug(qPrintable(msg));
  66. QString FullDestinationPath = Filter->mLogDestination;
  67. QString DestFilename = LogFiles.at(i).fileName();
  68. FullDestinationPath.append("\\");
  69. DestFilename.remove(Filter->mLogPrefix);
  70. FullDestinationPath.append(DestFilename);
  71. if(!QDir(Filter->mLogDestination).exists()) //Créer le répertoire cible s'il n'exite pas déjà
  72. {
  73. QDir().mkdir(Filter->mLogDestination);
  74. }
  75. if(QFile::copy(LogFiles.at(i).absoluteFilePath(),FullDestinationPath))
  76. {
  77. qDebug("Fichier %s copié vers %s",qPrintable(LogFiles.at(i).absoluteFilePath()),qPrintable(FullDestinationPath));
  78. }
  79. else
  80. {
  81. qDebug("Impossible de copier %s vers %s",qPrintable(LogFiles.at(i).absoluteFilePath()),qPrintable(FullDestinationPath));
  82. }
  83. if(QFile::remove(LogFiles.at(i).absoluteFilePath()))
  84. {
  85. qDebug("Fichier %s effacé",qPrintable(LogFiles.at(i).absoluteFilePath()));
  86. }
  87. else
  88. {
  89. qDebug("Impossible d'effacer %s",qPrintable(LogFiles.at(i).absoluteFilePath()));
  90. }
  91. }
  92. else if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE)
  93. {
  94. if(QFile::remove(LogFiles.at(i).absoluteFilePath()))
  95. {
  96. qDebug("Fichier %s effacé",qPrintable(LogFiles.at(i).absoluteFilePath()));
  97. }
  98. else
  99. {
  100. qDebug("Impossible d'effacer %s",qPrintable(LogFiles.at(i).absoluteFilePath()));
  101. }
  102. }
  103. }
  104. }
  105. }
  106. return 0;
  107. }