From 3d563d9e7dc44761fbf8281f94fd06ea0e4f1cb7 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 23 Mar 2019 19:52:52 +0100 Subject: [PATCH] Ref T554, clean up outdated auto publish files --- src/blackmisc/simulation/autopublishdata.cpp | 32 +++++++++++++++++--- src/blackmisc/simulation/autopublishdata.h | 2 +- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/blackmisc/simulation/autopublishdata.cpp b/src/blackmisc/simulation/autopublishdata.cpp index 308add74f..c555423f6 100644 --- a/src/blackmisc/simulation/autopublishdata.cpp +++ b/src/blackmisc/simulation/autopublishdata.cpp @@ -16,6 +16,7 @@ #include #include #include +#include using namespace BlackMisc::PhysicalQuantities; @@ -125,7 +126,7 @@ namespace BlackMisc int CAutoPublishData::readFromJsonFiles(const QString &dirPath) { - const QStringList fileList = publishFiles(dirPath); + const QStringList fileList = findAndCleanupPublishFiles(dirPath); if (fileList.isEmpty()) { return 0; } this->clear(); @@ -247,12 +248,12 @@ namespace BlackMisc bool CAutoPublishData::existAutoPublishFiles(const QString &dirPath) { - return publishFiles(dirPath).size() > 0; + return findAndCleanupPublishFiles(dirPath).size() > 0; } int CAutoPublishData::deleteAutoPublishFiles(const QString &dirPath) { - const QStringList fileList = publishFiles(dirPath); + const QStringList fileList = findAndCleanupPublishFiles(dirPath); if (fileList.isEmpty()) { return 0; } int c = 0; @@ -267,7 +268,7 @@ namespace BlackMisc } - QStringList CAutoPublishData::publishFiles(const QString &dirPath) + QStringList CAutoPublishData::findAndCleanupPublishFiles(const QString &dirPath) { QDir dir(dirPath); if (!dir.exists()) { return {}; } @@ -277,7 +278,28 @@ namespace BlackMisc dir.setNameFilters(filters); dir.setFilter(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks); const QStringList fileList = dir.entryList(); - return fileList; + if (fileList.isEmpty()) { return fileList; } + + // avoid outdated files (e.g. if format changes) + QStringList correctedList; + const QDateTime deadline = QDateTime::currentDateTimeUtc().addDays(-30); + for (const QString &fn : fileList) + { + QFileInfo fi(fn); + if (!fi.exists()) { continue; } + const QDateTime created = fi.created().toUTC(); + if (deadline < created) + { + correctedList << fn; + } + else + { + QFile deleteFile(fn); + deleteFile.remove(); + } + } + + return correctedList; } } // namespace diff --git a/src/blackmisc/simulation/autopublishdata.h b/src/blackmisc/simulation/autopublishdata.h index abfa7f48f..9ade33c64 100644 --- a/src/blackmisc/simulation/autopublishdata.h +++ b/src/blackmisc/simulation/autopublishdata.h @@ -87,7 +87,7 @@ namespace BlackMisc private: //! All files matching the pattern - static QStringList publishFiles(const QString &dirPath); + static QStringList findAndCleanupPublishFiles(const QString &dirPath); QMap m_modelStringVsCG; QMap m_modelStringVsSimulatorInfo;