Ref T515, improved FS validation and messages

This commit is contained in:
Klaus Basan
2019-01-28 22:24:42 +01:00
committed by Mat Sutcliffe
parent 070577dae8
commit 610e1559e1

View File

@@ -546,15 +546,23 @@ namespace BlackMisc
CStatusMessageList CFsCommonUtil::validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped) CStatusMessageList CFsCommonUtil::validateConfigFiles(const CAircraftModelList &models, CAircraftModelList &validModels, CAircraftModelList &invalidModels, bool ignoreEmpty, int stopAtFailedFiles, bool &stopped)
{ {
CAircraftModelList sorted(models); CAircraftModelList sorted(models);
CStatusMessage m;
sorted.sortByFileName(); sorted.sortByFileName();
stopped = false; stopped = false;
CStatusMessageList msgs = sorted.validateFiles(validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped, true); CStatusMessageList msgs = sorted.validateFiles(validModels, invalidModels, ignoreEmpty, stopAtFailedFiles, stopped, true);
if (stopped || validModels.isEmpty()) { return msgs; } if (stopped || validModels.isEmpty()) { return msgs; }
const int d = validModels.removeIfNotFsFamily(); const CAircraftModelList nonFsModels = validModels.findNonFsFamilyModels();
if (d > 0) if (!nonFsModels.isEmpty())
{ {
const CStatusMessage m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, QStringLiteral("Removed %1 non FS family models").arg(d), true); for (const CAircraftModel &model : nonFsModels)
{
m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, QStringLiteral("Removed '%1' non FS family model").arg(model.getModelStringAndDbKey()), true);
msgs.push_back(m);
}
const int d = validModels.removeIfNotFsFamily();
m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, QStringLiteral("Removed %1 non FS family models").arg(d), true);
msgs.push_back(m); msgs.push_back(m);
} }
@@ -564,21 +572,29 @@ namespace BlackMisc
for (const QString &fileName : fileNames) for (const QString &fileName : fileNames)
{ {
bool ok = false; bool ok = false;
const CAircraftCfgEntriesList entries = CAircraftCfgParser::performParsingOfSingleFile(fileName, ok, msgs); const CAircraftCfgEntriesList entries = CAircraftCfgParser::performParsingOfSingleFile(fileName, ok, msgs);
const CAircraftModelList removedModels = validModels.removeIfFileButNotInSet(fileName, entries.getTitleSetUpperCase()); const QSet<QString> removeModelStrings = entries.getTitleSetUpperCase();
const CAircraftModelList removedModels = validModels.removeIfFileButNotInSet(fileName, removeModelStrings);
for (const CAircraftModel &removedModel : removedModels) for (const CAircraftModel &removedModel : removedModels)
{ {
removedCfgEntries++; removedCfgEntries++;
const CStatusMessage m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, QStringLiteral("'%1', removed because no longer in '%1'").arg(removedModel.getModelStringAndDbKey(), removedModel.getFileName()), true); m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityError, QStringLiteral("'%1', removed because no longer in '%2'").arg(removedModel.getModelStringAndDbKey(), removedModel.getFileName()), true);
msgs.push_back(m); msgs.push_back(m);
} }
invalidModels.push_back(removedModels);
} }
if (removedCfgEntries < 1) if (removedCfgEntries < 1)
{ {
const CStatusMessage m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityInfo, QStringLiteral("Not removed any models, all OK!"), true); m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityInfo, QStringLiteral("Not removed any models, all OK!"), true);
msgs.push_back(m); msgs.push_back(m);
} }
m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityInfo, QStringLiteral("cfg validation, %1 valid models").arg(validModels.size()), true);
msgs.push_back(m);
m = CStatusMessage(getLogCategories(), CStatusMessage::SeverityWarning, QStringLiteral("cfg validation, %1 invalid models").arg(invalidModels.size()), true);
msgs.push_back(m);
return msgs; return msgs;
} }
} // namespace } // namespace