Ref T129, return CFlightPlanRemarks from CAirspaceMonitor::tryToGetFlightPlanRemarks, not only string

Uses utility function in CAircraftMatcher
This commit is contained in:
Klaus Basan
2017-10-03 19:13:46 +02:00
committed by Mathew Sutcliffe
parent 3de7d66e65
commit 3c9d454638
4 changed files with 62 additions and 27 deletions

View File

@@ -47,6 +47,27 @@ namespace BlackCore
CAircraftMatcher::~CAircraftMatcher()
{ }
CAirlineIcaoCode CAircraftMatcher::failoverValidAirlineIcao(const CCallsign &callsign, const QString &primaryIcao, const QString &secondaryIcao, bool airlineFromCallsign, CStatusMessageList *log)
{
if (CAirlineIcaoCode::isValidAirlineDesignator(primaryIcao)) { return CAirlineIcaoCode(primaryIcao); }
if (CAirlineIcaoCode::isValidAirlineDesignator(secondaryIcao))
{
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Using secondary airline ICAO '%1', primary '%2' not valid").arg(secondaryIcao, primaryIcao), getLogCategories());
return CAirlineIcaoCode(secondaryIcao);
}
if (airlineFromCallsign)
{
const QString airlineSuffix = callsign.getAirlineSuffix();
if (CAirlineIcaoCode::isValidAirlineDesignator(airlineSuffix))
{
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Using airline from callsign '%1', suffix: '%2'").arg(callsign.toQString(), airlineSuffix), getLogCategories());
return CAirlineIcaoCode(airlineSuffix);
}
}
CMatchingUtils::addLogDetailsToList(log, callsign, QString("Two invalid airline ICAO codes '%1', '%2'").arg(primaryIcao, secondaryIcao), getLogCategories());
return CAirlineIcaoCode();
}
CAircraftModel CAircraftMatcher::getClosestMatch(const CSimulatedAircraft &remoteAircraft, CStatusMessageList *log) const
{
const CAircraftModelList modelSet(m_modelSet); // Models for this matching

View File

@@ -69,7 +69,16 @@ namespace BlackCore
//! Result depends on enabled modes.
//! \sa MatchingModeFlag
//! \threadsafe
BlackMisc::Simulation::CAircraftModel getClosestMatch(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, BlackMisc::CStatusMessageList *log = nullptr) const;
BlackMisc::Simulation::CAircraftModel getClosestMatch(
const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft,
BlackMisc::CStatusMessageList *log = nullptr) const;
//! Return the airline ICAO being valid
//! \threadsafe
static BlackMisc::Aviation::CAirlineIcaoCode failoverValidAirlineIcao(
const BlackMisc::Aviation::CCallsign &callsign,
const QString &primaryIcao, const QString &secondaryIcao,
bool airlineFromCallsign, BlackMisc::CStatusMessageList *log = nullptr);
//! Try to find the corresponding data in DB and get best information for given data
//! \threadsafe

View File

@@ -306,12 +306,18 @@ namespace BlackCore
return plan;
}
QString CAirspaceMonitor::tryToGetFlightPlanRemarks(const CCallsign &callsign) const
CFlightPlanRemarks CAirspaceMonitor::tryToGetFlightPlanRemarks(const CCallsign &callsign) const
{
if (callsign.isEmpty()) { return ""; }
if (m_flightPlanCache.contains(callsign)) { return m_flightPlanCache[callsign].getRemarks(); }
if (callsign.isEmpty()) { return CFlightPlanRemarks(); }
// full flight plan's remarks
if (m_flightPlanCache.contains(callsign)) { return m_flightPlanCache[callsign].getFlightPlanRemarks(); }
// remarks only
if (this->supportsVatsimDataFile()) { return sApp->getWebDataServices()->getVatsimDataFileReader()->getFlightPlanRemarksForCallsign(callsign); }
return "";
// unsupported
return CFlightPlanRemarks();
}
CUserList CAirspaceMonitor::getUsers() const
@@ -915,29 +921,28 @@ namespace BlackCore
this->addReverseLookupMessage(callsign, m);
}
CAircraftModel CAirspaceMonitor::reverseLookupModelWithFlightplanData(const CCallsign &callsign, const QString &aircraftIcaoString, const QString &airlineIcaoString, const QString &livery, const QString &modelString, CAircraftModel::ModelType type, CStatusMessageList *log)
CAircraftModel CAirspaceMonitor::reverseLookupModelWithFlightplanData(
const CCallsign &callsign, const QString &aircraftIcaoString,
const QString &airlineIcaoString, const QString &livery, const QString &modelString,
CAircraftModel::ModelType type, CStatusMessageList *log)
{
const QString fpRemarks = this->tryToGetFlightPlanRemarks(callsign);
const CFlightPlanRemarks fpRemarks = this->tryToGetFlightPlanRemarks(callsign);
CAirlineIcaoCode airlineIcao = CAircraftMatcher::failoverValidAirlineIcao(callsign, airlineIcaoString, fpRemarks.getAirlineIcao(), true, log);
CAircraftIcaoCode aircraftIcao(aircraftIcaoString);
CAirlineIcaoCode airlineIcao(airlineIcaoString);
if (!fpRemarks.isEmpty())
if (fpRemarks.hasParsedAirlineRemarks())
{
const CFlightPlanRemarks ar(fpRemarks);
if (ar.hasParsedAirlineRemarks())
const QString airlineName = CAircraftMatcher::reverseLookupAirlineName(fpRemarks.getFlightOperator(), callsign, log);
if (!airlineName.isEmpty())
{
const QString airlineName = CAircraftMatcher::reverseLookupAirlineName(ar.getFlightOperator(), callsign, log);
if (!airlineName.isEmpty())
{
airlineIcao.setName(airlineName);
this->addReverseLookupMessage(callsign, QString("Setting airline name '%1'").arg(airlineName));
}
airlineIcao.setName(airlineName);
this->addReverseLookupMessage(callsign, QString("Setting airline name '%1'").arg(airlineName));
}
const QString telephony = CAircraftMatcher::reverseLookupTelephonyDesignator(ar.getRadioTelephony(), callsign, log);
if (!telephony.isEmpty())
{
airlineIcao.setTelephonyDesignator(telephony);
this->addReverseLookupMessage(callsign, QString("Setting telephoy designator '%1'").arg(telephony));
}
const QString telephony = CAircraftMatcher::reverseLookupTelephonyDesignator(fpRemarks.getRadioTelephony(), callsign, log);
if (!telephony.isEmpty())
{
airlineIcao.setTelephonyDesignator(telephony);
this->addReverseLookupMessage(callsign, QString("Setting telephoy designator '%1'").arg(telephony));
}
}
return CAircraftMatcher::reverselLookupModel(callsign, aircraftIcao, airlineIcao, livery, modelString, type, log);

View File

@@ -123,9 +123,9 @@ namespace BlackCore
BlackMisc::Aviation::CFlightPlan loadFlightPlanFromNetwork(const BlackMisc::Aviation::CCallsign &callsign);
//! Try to get flight plan remarks
//! \remarks returns a value only if the flight plan is already cached
//! \remarks returns a value only if the flight plan is already cached or can be obtained from VATSIM reader
//! \threadsafe
QString tryToGetFlightPlanRemarks(const BlackMisc::Aviation::CCallsign &callsign) const;
BlackMisc::Aviation::CFlightPlanRemarks tryToGetFlightPlanRemarks(const BlackMisc::Aviation::CCallsign &callsign) const;
//! Returns this list of other clients we know about
//! \threadsafe
@@ -220,7 +220,7 @@ namespace BlackCore
void airspaceAircraftSnapshot(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &snapshot);
private:
//! Used to temp store FsInn data
//! Used to temporary store FsInn data
struct FsInnPacket
{
//! Default ctor
@@ -250,7 +250,7 @@ namespace BlackCore
QMap<BlackMisc::Aviation::CCallsign, BlackMisc::Aviation::CFlightPlan> m_flightPlanCache; //!< flight plan information retrieved from network and cached
INetwork *m_network = nullptr; //!< corresponding network interface
INetwork *m_network = nullptr; //!< corresponding network interface
CAirspaceAnalyzer *m_analyzer = nullptr; //!< owned analyzer
bool m_enableReverseLookupMsgs = false; //!< shall we log. information about the matching process
bool m_enableAircraftPartsHistory = true; //!< shall we keep a history of aircraft parts