Index: sources/storage/filehandler.cpp =================================================================== diff -u -r44a85c96ab55e424866ec4cca0270aa218355f82 -rd2035a8728794afeefaa244bf8d1597926d945f5 --- sources/storage/filehandler.cpp (.../filehandler.cpp) (revision 44a85c96ab55e424866ec4cca0270aa218355f82) +++ sources/storage/filehandler.cpp (.../filehandler.cpp) (revision d2035a8728794afeefaa244bf8d1597926d945f5) @@ -15,15 +15,15 @@ #include "filehandler.h" //Qt -#include +#include +#include #include -#include +#include +#include +#include - // Project -#include "storageglobals.h" #include "logger.h" -#include "threads.h" // namespace using namespace Storage; @@ -46,13 +46,17 @@ bool FileHandler::write(const QString &vFileName, const QString &vContent, bool vAppend) { QFile file(vFileName); - QIODevice::OpenMode openMode = vAppend ? - QFile::Text | QFile::Append : - QFile::Text | QFile::WriteOnly; + QFile::OpenMode openMode = vAppend ? + QFile::Text | QFile::Append : + QFile::Text | QFile::WriteOnly; if (! file.open(openMode)) { - errOut(QObject::tr("Can't open file for write (%1).Possible corrupted file system").arg(vFileName)); + // coco begin validated : This has been manually test. Needs filesystem access to make file the way it can't be opened for writing. + QString msg = QString("Can't open file for write (%1).Possible corrupted file system").arg(vFileName); + errOut (msg); + LOG_DEBUG(msg); return false; } + // coco end QTextStream out(&file); out << vContent; out.flush(); @@ -70,7 +74,9 @@ { QFile file(vFileName); if (! file.open(QFile::Text | QFile::ReadOnly)) { - errOut(QObject::tr("Can't open file for read (%1).Possible corrupted file system").arg(vFileName)); + QString msg = QString("Can't open file for read (%1).Possible corrupted file system").arg(vFileName); + errOut (msg); + LOG_DEBUG(msg); return false; } QTextStream in(&file); @@ -96,11 +102,68 @@ QStringList arguments; arguments << "-r" << vSource << vDestination; int result = QProcess::execute(cp, arguments); - - cp = "sync;sync;sync;"; - arguments.clear(); - QProcess::execute(cp, arguments); - return result; } // coco end + +/*! + * \brief FileHandler::removeFiles + * \details + * \param vFolder + * \param vFilter + * \param vDateOlderThan + * \return + */ +int FileHandler::removeFiles(const QStringList &vFolders, const QStringList &vNameFilter, const QDate &vDateOlderThan) +{ + int countRemoved = 0; + for (const auto &folder : vFolders) { + QDir dir(folder); + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); + dir.setSorting(QDir::Time | QDir::Reversed); + QFileInfoList infoList = dir.entryInfoList(vNameFilter); + for (const auto &info : infoList) { + QDateTime fileTime = info.lastModified(); + QString fileName = info.absoluteFilePath(); + if (fileTime.isValid()) { + if (fileTime.date() <= vDateOlderThan) { + if (QFile::remove(fileName)) { + ++countRemoved; + LOG_DEBUG(QString("%1 File(s) %2 removed").arg(countRemoved).arg(fileName)); + } + else { + // coco begin validated : This has been manually tested since requires to change in file system to reproduce the error. + LOG_DEBUG(QString("Can't delete file : ") + fileName); + } + // coco end + } + } + else { + // coco begin validated : This has been manually tested since requires to change in file system to reproduce the error. + LOG_DEBUG(QString("Can't get last modified date of file : ") + fileName); + } + // coco end + } + } + return countRemoved; +} + +/*! + * \brief FileHandler::makeFolder + * \details Create the folder vFolder if it doesn't exist. + * \param vFolder - the folder to create + * \return true on successfull creation + */ +bool FileHandler::makeFolder(const QString &vFolder) +{ + QDir dir(vFolder); + if ( ! dir.exists(vFolder) ) { + if ( ! dir.mkpath(vFolder) ) { + QString msg = "Can't create folder " + vFolder; + qDebug() << msg; + LOG_DEBUG(msg); + return false; + } + } + return true; +}