Ref T199, bootstrap (aka setup) cache explicitly initialized

* initMultiSimulatorCache
* initCaches detecting bootstrap and init via high level functions
This commit is contained in:
Klaus Basan
2018-01-13 00:35:27 +01:00
parent 312d01d35b
commit eac422f853
2 changed files with 36 additions and 23 deletions

View File

@@ -10,6 +10,7 @@
#include "ui_copyconfigurationcomponent.h"
#include "copyconfigurationcomponent.h"
#include "configurationwizard.h"
#include "blackcore/data/globalsetup.h"
#include "blackgui/guiapplication.h"
#include "blackconfig/buildconfig.h"
#include "blackmisc/directoryutils.h"
@@ -27,6 +28,8 @@ using namespace BlackMisc::Simulation;
using namespace BlackMisc::Simulation::Data;
using namespace BlackConfig;
using namespace BlackGui;
using namespace BlackCore;
using namespace BlackCore::Data;
namespace BlackGui
{
@@ -91,7 +94,7 @@ namespace BlackGui
if (!destination.exists()) { return 0; }
// init model caches if applicable (.rev file entries)
this->initModelCaches(files);
this->initCaches(files);
int c = 0;
QStringList copied;
@@ -341,35 +344,25 @@ namespace BlackGui
return files;
}
void CCopyConfigurationComponent::initModelCaches(const QStringList &files)
void CCopyConfigurationComponent::initCaches(const QStringList &files)
{
if (files.isEmpty()) { return; }
if (!ui->rb_Cache->isChecked()) { return; }
for (const QString &file : files)
{
CStatusMessage msg;
IMultiSimulatorModelCaches *cache = nullptr;
if (file.contains("modelset", Qt::CaseInsensitive))
{
cache = &m_modelSetCaches;
this->initMultiSimulatorCache(&m_modelSetCaches, file);
}
else if (file.contains("modelcache", Qt::CaseInsensitive))
{
cache = &m_modelCaches;
this->initMultiSimulatorCache(&m_modelCaches, file);
}
else
else if (file.contains(CDirectoryUtils::bootstrapFileName()))
{
continue;
}
const CSimulatorInfo info = cache->getSimulatorForFilename(file);
if (info.isNoSimulator()) continue;
if (cache->isSaved(info)) continue; // already a file and hence in .rev
const QFileInfo fi(file);
msg = cache->setCacheTimestamp(fi.lastModified(), info); // create cache file and timestamp in .rev
if (msg.isFailure())
{
CLogMessage(this).preformatted(msg);
CData<TGlobalSetup> setup { this }; //!< data cache setup
const CGlobalSetup s = CGlobalSetup::fromJsonFile(file, true);
setup.set(s);
}
}
@@ -377,6 +370,19 @@ namespace BlackGui
CGuiApplication::processEventsFor(2500);
}
void CCopyConfigurationComponent::initMultiSimulatorCache(IMultiSimulatorModelCaches *cache, const QString &fileName)
{
const CSimulatorInfo info = cache->getSimulatorForFilename(fileName);
if (info.isNoSimulator()) return;
if (cache->isSaved(info)) return; // already a file and hence in .rev
const QFileInfo fi(fileName);
const CStatusMessage msg = cache->setCacheTimestamp(fi.lastModified(), info); // create cache file and timestamp in .rev
if (msg.isFailure())
{
CLogMessage(this).preformatted(msg);
}
}
void CCopyConfigurationComponent::initOtherSwiftVersions()
{
ui->cb_OtherVersions->clear();

View File

@@ -99,8 +99,11 @@ namespace BlackGui
//! Get the selected files
QStringList getSelectedFiles() const;
//! Init model caches if required (create .rev entries with high level functions)
void initModelCaches(const QStringList &files);
//! Init caches if required (create .rev entries with high level functions)
void initCaches(const QStringList &files);
//! Init a multi simulator cache (modelset/models)
void initMultiSimulatorCache(BlackMisc::Simulation::Data::IMultiSimulatorModelCaches *cache, const QString &fileName);
//! Init the other swift versions
void initOtherSwiftVersions();
@@ -116,9 +119,13 @@ namespace BlackGui
bool m_nameFilterDisables = false; //!< name filter disables or hides
bool m_withBootstrapFile = false;
// caches will be initialized (default files on disk)
BlackMisc::Simulation::Data::CModelCaches m_modelCaches{false, this};
BlackMisc::Simulation::Data::CModelSetCaches m_modelSetCaches{false, this};
// caches will be explicitly initialized in initCaches
BlackMisc::Simulation::Data::CModelCaches m_modelCaches{ false, this };
BlackMisc::Simulation::Data::CModelSetCaches m_modelSetCaches{ false, this };
// caches will be initialized so they can be overriden
// those caches do not harm if they exists default initialized
//! \fixme this is a workaround, as it creates files on disk even if those are not copied. It was much nicer if the cache would init themself if the file appears
BlackMisc::CData<BlackMisc::Simulation::Data::TModelSetLastSelection> m_modelSetCurrentSimulator { this };
BlackMisc::CData<BlackMisc::Simulation::Data::TModelCacheLastSelection> m_modelsCurrentSimulator { this };
BlackMisc::CData<BlackCore::Data::TLauncherSetup> m_launcherSetup { this };