refs #801, suppport for missing parts in airports/list

This commit is contained in:
Klaus Basan
2016-11-18 21:46:50 +01:00
parent 26cc77ebab
commit 0bedc9f084
4 changed files with 35 additions and 0 deletions

View File

@@ -32,12 +32,31 @@ namespace BlackMisc
return this->findBy(&CAirport::getIcao, icao);
}
bool CAirportList::containsAirportWithIcaoCode(const CAirportIcaoCode &icao) const
{
if (icao.isEmpty()) { return false; }
return this->contains(&CAirport::getIcao, icao);
}
void CAirportList::replaceOrAddByIcao(const CAirport &addedOrReplacedAirport)
{
if (!addedOrReplacedAirport.hasValidIcaoCode()) return; // ignore invalid airport
this->replaceOrAdd(&CAirport::getIcao, addedOrReplacedAirport.getIcao(), addedOrReplacedAirport);
}
void CAirportList::updateMissingParts(const CAirportList &updateFromList)
{
if (updateFromList.isEmpty()) { return; }
for (CAirport &airport : *this)
{
const CAirport fromAirport = updateFromList.findFirstByIcao(airport.getIcao());
if (fromAirport.hasValidIcaoCode())
{
airport.updateMissingParts(fromAirport);
}
}
}
CAirport CAirportList::findFirstByIcao(const CAirportIcaoCode &icao, const CAirport &ifNotFound) const
{
return this->findFirstByOrDefault(&CAirport::getIcao, icao, ifNotFound);