Index: sources/storage/filehandler.cpp =================================================================== diff -u -rc71deaab48699cffdf9db816dfac2778d79c2238 -rd1907168ef46faa6de1ada400cad789f8379041f --- sources/storage/filehandler.cpp (.../filehandler.cpp) (revision c71deaab48699cffdf9db816dfac2778d79c2238) +++ sources/storage/filehandler.cpp (.../filehandler.cpp) (revision d1907168ef46faa6de1ada400cad789f8379041f) @@ -1,29 +1,29 @@ /*! - * + * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * \copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. - * + * * \file filehandler.cpp * \author (last) Behrouz NematiPour * \date (last) 22-Apr-2020 * \author (original) Behrouz NematiPour * \date (original) 24-Sep-2019 - * + * */ #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; @@ -55,13 +55,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; + // coco begin validated : This has been manually test. Needs filesystem access to make file the way it can't be opened for writing. if (! file.open(openMode)) { - errOut(QObject::tr("Can't open file for write (%1).Possible corrupted file system").arg(vFileName)); + 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(); @@ -80,7 +84,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); @@ -148,11 +154,66 @@ 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(); + // coco begin validated : This has been manually tested since requires to change in file system to reproduce the error. + 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 { + LOG_DEBUG(QString("Can't delete file : ") + fileName); + } + } + } + else { + 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; +}