diff --git a/src/blackcore/db/airportdatareader.cpp b/src/blackcore/db/airportdatareader.cpp index df0690cec..e710c5b49 100644 --- a/src/blackcore/db/airportdatareader.cpp +++ b/src/blackcore/db/airportdatareader.cpp @@ -116,7 +116,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit dataRead(CEntityFlags::AirportEntity, CEntityFlags::ReadFailed, 0, url); - return ex.toStatusMessage(this, QStringLiteral("Reading airports from '%1'").arg(fileName)); + return CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading airports from '%1'").arg(fileName)); } } } diff --git a/src/blackcore/db/icaodatareader.cpp b/src/blackcore/db/icaodatareader.cpp index 71cacbcfe..36b21e6dc 100644 --- a/src/blackcore/db/icaodatareader.cpp +++ b/src/blackcore/db/icaodatareader.cpp @@ -544,7 +544,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::CountryEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading countries from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading countries from '%1'").arg(fileName))); } } } @@ -583,7 +583,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::AircraftIcaoEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading aircraft ICAOs from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading aircraft ICAOs from '%1'").arg(fileName))); } } } @@ -622,7 +622,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading airline ICAOs from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading airline ICAOs from '%1'").arg(fileName))); } } } @@ -661,7 +661,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::AircraftCategoryEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading categories from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading categories from '%1'").arg(fileName))); } } } diff --git a/src/blackcore/db/modeldatareader.cpp b/src/blackcore/db/modeldatareader.cpp index 78b50de7e..68e240cdc 100644 --- a/src/blackcore/db/modeldatareader.cpp +++ b/src/blackcore/db/modeldatareader.cpp @@ -493,7 +493,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::LiveryEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading liveries from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading liveries from '%1'").arg(fileName))); } } } @@ -533,7 +533,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::ModelEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading models from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading models from '%1'").arg(fileName))); } } } @@ -573,7 +573,7 @@ namespace BlackCore catch (const CJsonException &ex) { emit this->dataRead(CEntityFlags::DistributorEntity, CEntityFlags::ReadFailed, 0, url); - msgs.push_back(ex.toStatusMessage(this, QStringLiteral("Reading distributors from '%1'").arg(fileName))); + msgs.push_back(CStatusMessage::fromJsonException(ex, this, QStringLiteral("Reading distributors from '%1'").arg(fileName))); } } } diff --git a/src/blackcore/setupreader.cpp b/src/blackcore/setupreader.cpp index 398458283..9fcf6c229 100644 --- a/src/blackcore/setupreader.cpp +++ b/src/blackcore/setupreader.cpp @@ -330,7 +330,7 @@ namespace BlackCore } catch (const CJsonException &ex) { - return ex.toStatusMessage(this, QStringLiteral("Parsing local setup file '%1'").arg(fn)); + return CStatusMessage::fromJsonException(ex, this, QStringLiteral("Parsing local setup file '%1'").arg(fn)); } } @@ -408,7 +408,7 @@ namespace BlackCore // we downloaded an unparsable JSON file. // as we control those files something is wrong const QString errorMsg = QStringLiteral("Setup file loaded from '%1' cannot be parsed").arg(urlString); - const CStatusMessage msg = ex.toStatusMessage(this, errorMsg); + const CStatusMessage msg = CStatusMessage::fromJsonException(ex, this, errorMsg); CLogMessage::preformatted(msg); emit this->setupLoadingMessages(msg); diff --git a/src/blackgui/components/copymodelsfromotherswiftversionscomponent.cpp b/src/blackgui/components/copymodelsfromotherswiftversionscomponent.cpp index b52b32b12..38981f0d0 100644 --- a/src/blackgui/components/copymodelsfromotherswiftversionscomponent.cpp +++ b/src/blackgui/components/copymodelsfromotherswiftversionscomponent.cpp @@ -152,7 +152,7 @@ namespace BlackGui } catch (const CJsonException &ex) { - this->showOverlayMessage(ex.toStatusMessage(this, QStringLiteral("JSON format error. '%1'").arg(fiOtherModelFile.absoluteFilePath()))); + this->showOverlayMessage(CStatusMessage::fromJsonException(ex, this, QStringLiteral("JSON format error. '%1'").arg(fiOtherModelFile.absoluteFilePath()))); return false; } diff --git a/src/blackgui/editors/aircraftpartsform.cpp b/src/blackgui/editors/aircraftpartsform.cpp index d2061fbc4..a4207ccd7 100644 --- a/src/blackgui/editors/aircraftpartsform.cpp +++ b/src/blackgui/editors/aircraftpartsform.cpp @@ -88,7 +88,7 @@ namespace BlackGui } catch (const CJsonException &ex) { - ex.toLogMessage(this, "Parse error"); + CLogMessage(this).preformatted(CStatusMessage::fromJsonException(ex, this, "Parse error")); return parts; } return parts; diff --git a/src/blackgui/views/viewbase.cpp b/src/blackgui/views/viewbase.cpp index b0d720bc9..c6df14c51 100644 --- a/src/blackgui/views/viewbase.cpp +++ b/src/blackgui/views/viewbase.cpp @@ -801,7 +801,7 @@ namespace BlackGui } catch (const CJsonException &ex) { - m = ex.toStatusMessage(this, QString("Reading JSON from '%1'").arg(fileName)); + m = CStatusMessage::fromJsonException(ex, this, QString("Reading JSON from '%1'").arg(fileName)); break; } } diff --git a/src/blackmisc/aviation/flightplan.cpp b/src/blackmisc/aviation/flightplan.cpp index 71d1c5f1c..b5553cedc 100644 --- a/src/blackmisc/aviation/flightplan.cpp +++ b/src/blackmisc/aviation/flightplan.cpp @@ -630,7 +630,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - const CStatusMessage m = ex.toStatusMessage(&fp, QString("Parsing flight plan from failed.")); + const CStatusMessage m = CStatusMessage::fromJsonException(ex, &fp, QString("Parsing flight plan from failed.")); Q_UNUSED(m) } return fp; @@ -703,7 +703,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - m = ex.toStatusMessage(getLogCategories(), "Parse error in " + fileName); + m = CStatusMessage::fromJsonException(ex, getLogCategories(), "Parse error in " + fileName); if (msgs) { msgs->push_back(m); } break; } @@ -717,7 +717,7 @@ namespace BlackMisc { if (msgs) { - msgs->push_back(ex.toStatusMessage(getLogCategories(), QStringLiteral("Parsing flight plan from '%1' failed.").arg(fileName))); + msgs->push_back(CStatusMessage::fromJsonException(ex, getLogCategories(), QStringLiteral("Parsing flight plan from '%1' failed.").arg(fileName))); } } return CFlightPlan(); diff --git a/src/blackmisc/jsonexception.cpp b/src/blackmisc/jsonexception.cpp index f33bd3db0..27c2f2a8d 100644 --- a/src/blackmisc/jsonexception.cpp +++ b/src/blackmisc/jsonexception.cpp @@ -7,9 +7,7 @@ */ #include "blackmisc/jsonexception.h" -#include "blackmisc/statusmessage.h" -#include "blackmisc/logcategorylist.h" -#include "blackmisc/logmessage.h" +#include "blackmisc/range.h" #include #include #include @@ -28,22 +26,12 @@ namespace BlackMisc void CJsonException::anchor() { } - CStatusMessage CJsonException::toStatusMessage(const CLogCategoryList &categories, const QString &prefix) const - { - return CStatusMessage(categories).validationError(toString(prefix)); - } - QString CJsonException::toString(const QString &prefix) const { if (prefix.isEmpty()) { return QStringLiteral("%1 in '%2'").arg(what()).arg(getStackTrace()); } return QStringLiteral("%1: %2 in '%3'").arg(prefix).arg(what()).arg(getStackTrace()); } - void CJsonException::toLogMessage(const CLogCategoryList &categories, const QString &prefix) const - { - CLogMessage(categories).validationError(toString(prefix)); - } - QString CJsonException::stackString() { QStringList list; diff --git a/src/blackmisc/jsonexception.h b/src/blackmisc/jsonexception.h index f408444fc..0d71feff6 100644 --- a/src/blackmisc/jsonexception.h +++ b/src/blackmisc/jsonexception.h @@ -34,15 +34,9 @@ namespace BlackMisc //! Get a stack trace of where in the JSON object tree the error occurred. const QString &getStackTrace() const { return m_stack; } - //! Get a status message representation. - CStatusMessage toStatusMessage(const CLogCategoryList &categories, const QString &prefix) const; - //! As string info QString toString(const QString &prefix) const; - //! Write a message to the log. - void toLogMessage(const CLogCategoryList &categories, const QString &prefix) const; - private: static QString stackString(); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 8cb9206f4..b6607c1d4 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -458,7 +458,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - CStatusMessage message = ex.toStatusMessage(this, "Invalid parts packet"); + CStatusMessage message = CStatusMessage::fromJsonException(ex, this, "Invalid parts packet"); message.setSeverity(CStatusMessage::SeverityDebug); CLogMessage::preformatted(message); } diff --git a/src/blackmisc/statusmessage.cpp b/src/blackmisc/statusmessage.cpp index e8b229857..a85d2ff45 100644 --- a/src/blackmisc/statusmessage.cpp +++ b/src/blackmisc/statusmessage.cpp @@ -348,6 +348,11 @@ namespace BlackMisc return m; } + CStatusMessage CStatusMessage::fromJsonException(const CJsonException &ex, const CLogCategoryList &categories, const QString &prefix) + { + return CStatusMessage(categories).validationError(ex.toString(prefix)); + } + void CStatusMessage::registerMetadata() { CValueObject::registerMetadata(); diff --git a/src/blackmisc/statusmessage.h b/src/blackmisc/statusmessage.h index 21e305d56..c054fee1c 100644 --- a/src/blackmisc/statusmessage.h +++ b/src/blackmisc/statusmessage.h @@ -510,6 +510,9 @@ namespace BlackMisc //! Object from JSON static CStatusMessage fromDatabaseJson(const QJsonObject &json); + //! Object from JSON exception message + static CStatusMessage fromJsonException(const CJsonException &ex, const CLogCategoryList &categories, const QString &prefix); + //! \copydoc BlackMisc::CValueObject::registerMetadata static void registerMetadata(); @@ -543,7 +546,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - return ex.toStatusMessage(categories, prefix); + return CStatusMessage::fromJsonException(ex, categories, prefix); } return {}; } @@ -558,7 +561,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - return ex.toStatusMessage(categories, prefix); + return CStatusMessage::fromJsonException(ex, categories, prefix); } return {}; } diff --git a/src/blackmisc/variant.cpp b/src/blackmisc/variant.cpp index 6ca9afdff..272f4f64c 100644 --- a/src/blackmisc/variant.cpp +++ b/src/blackmisc/variant.cpp @@ -287,7 +287,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - return ex.toStatusMessage(categories, prefix); + return CStatusMessage::fromJsonException(ex, categories, prefix); } return {}; } @@ -355,7 +355,7 @@ namespace BlackMisc } catch (const CJsonException &ex) { - return ex.toStatusMessage(categories, prefix); + return CStatusMessage::fromJsonException(ex, categories, prefix); } return {}; }