#include "LogsHandler.h" #include "LogsSorterConfigData.h" #include "LogsSorter.h" #include #include #include CLogsHandler::CLogsHandler() : QObject() { mSortingConfigData = 0; mProgramPtr = 0; mLogsWatcher = new QFileSystemWatcher(); mHandlerRunning = false; connect(mLogsWatcher,&QFileSystemWatcher::directoryChanged,this,&CLogsHandler::WatchedDirectoryChanged); } CLogsHandler::~CLogsHandler() { mLogsWatcher->removePaths(mLogsWatcher->directories()); delete mLogsWatcher; } int CLogsHandler::SetSortingConfigData(CLogsSorterConfigData *ConfigData) { mSortingConfigData = ConfigData; mLogsWatcher->removePaths(mLogsWatcher->directories()); if(QDir(ConfigData->mLogsSourceDirectory).exists()) { mLogsWatcher->addPath(ConfigData->mLogsSourceDirectory); QString msg = QString("La surveillance est débutée pour le répertoire source %1").arg(ConfigData->mLogsSourceDirectory); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::darkGreen); } else { QString msg = QString("Le répertoire source est inexistant. Vérifier la configuration ou activer le VPN"); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red); } return RET_OK; } int CLogsHandler::StartLogHandling() { mHandlerRunning = true; return RET_OK; } int CLogsHandler::StopLogHandling() { mHandlerRunning = false; return RET_OK; } int CLogsHandler::ParseWatchedDirectory() { return ParseWatchedDirectory(mSortingConfigData->mLogsSourceDirectory); } void CLogsHandler::WatchedDirectoryChanged(QString Path) { ParseWatchedDirectory(Path); } int CLogsHandler::ParseWatchedDirectory(QString Path) { QDir SourceDir(Path); QFileInfoList LogFiles = SourceDir.entryInfoList(); const CLogsFilterData *Filter; for(int i = 0; i < LogFiles.size(); i++) { for(int j = 0; j < mSortingConfigData->mLogsFiltersList.size(); j++) { Filter = &mSortingConfigData->mLogsFiltersList[j]; if(Filter->mIsFilterActive == true) { if(LogFiles.at(i).fileName().contains(Filter->mLogIdentificator) && //Le fichier contient le différentiateur comme LOGZT1, LOGZT2, BooleanData, etc. LogFiles.at(i).fileName().contains(Filter->mLogPrefix)) //ET le fichier contient le bon préfixe (identification de la station). { if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_MOVE_OPERATION_TYPE) { QString msg= QString("Filtre trouvé pour le fichier %1").arg(LogFiles.at(i).fileName()); qDebug(qPrintable(msg)); QString DestinationDir = Filter->mLogDestination; if(Filter->mCreateDayDirectories == true) { DestinationDir.append("\\"); DestinationDir.append(QDate::currentDate().toString("yyyyMMdd")); } QString FullDestinationPath = DestinationDir; QString DestFilename = LogFiles.at(i).fileName(); FullDestinationPath.append("\\"); DestFilename.remove(Filter->mLogPrefix); FullDestinationPath.append(DestFilename); if(!QDir(DestinationDir).exists()) //Créer le répertoire cible s'il n'exite pas déjà { QDir().mkdir(DestinationDir); } if(QFile::copy(LogFiles.at(i).absoluteFilePath(),FullDestinationPath)) { QString msg = QString("Fichier %1 copié vers %2").arg(LogFiles.at(i).absoluteFilePath()).arg(FullDestinationPath); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg); if(QFile::remove(LogFiles.at(i).absoluteFilePath())) { QString msg = QString("Fichier %1 effacé").arg(LogFiles.at(i).absoluteFilePath()); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg); } else { QString msg = QString("Impossible d'effacer le fichier %1").arg(LogFiles.at(i).absoluteFilePath()); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red); } } else { QString msg = QString("Impossible de copier %1 vers %2 (le fichier existe probablement déjà !)").arg(LogFiles.at(i).absoluteFilePath()).arg(FullDestinationPath); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg,Qt::red); } } else if(Filter->mFilterOperation == CLogsFilterData::LOG_FILTER_DELETE_OPERATION_TYPE) { if(QFile::remove(LogFiles.at(i).absoluteFilePath())) { QString msg = QString("Fichier %1 effacé").arg(LogFiles.at(i).absoluteFilePath()); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg); } else { QString msg = QString("Impossible d'effacer le fichier %1").arg(LogFiles.at(i).absoluteFilePath()); qDebug(qPrintable(msg)); mProgramPtr->AddGeneralMsgTextRequest(msg); } } } } } } return RET_OK; }