Ref T189, renamed to CWebReaderFlags::entitiesToReaders plus some assert utility functions

This commit is contained in:
Klaus Basan
2017-11-13 01:20:28 +01:00
parent 58b7f282ee
commit bc2b40dcd8
3 changed files with 41 additions and 21 deletions

View File

@@ -1073,22 +1073,20 @@ namespace BlackCore
Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity"); Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
Q_ASSERT_X(CEntityFlags::anySwiftDbEntity(entity), Q_FUNC_INFO, "No swift DB entity"); Q_ASSERT_X(CEntityFlags::anySwiftDbEntity(entity), Q_FUNC_INFO, "No swift DB entity");
const CWebReaderFlags::WebReader wr = CWebReaderFlags::entityToReader(entity); const CWebReaderFlags::WebReader wr = CWebReaderFlags::entitiesToReaders(entity);
switch (wr) switch (wr)
{ {
case CWebReaderFlags::IcaoDataReader: return m_icaoDataReader; case CWebReaderFlags::IcaoDataReader: return m_icaoDataReader;
case CWebReaderFlags::ModelReader: return m_modelDataReader; case CWebReaderFlags::ModelReader: return m_modelDataReader;
case CWebReaderFlags::AirportReader: return m_airportDataReader; case CWebReaderFlags::AirportReader: return m_airportDataReader;
default: default: break;
break;
} }
return nullptr; return nullptr;
} }
void CWebDataServices::initWriters() void CWebDataServices::initWriters()
{ {
m_databaseWriter = new CDatabaseWriter( m_databaseWriter = new CDatabaseWriter(sApp->getGlobalSetup().getDbRootDirectoryUrl(),
sApp->getGlobalSetup().getDbRootDirectoryUrl(),
this); this);
} }
@@ -1342,7 +1340,7 @@ namespace BlackCore
if (this->getAirportsCount() > 0) if (this->getAirportsCount() > 0)
{ {
QString json(QJsonDocument(this->getAirports().toJson()).toJson()); QString json(QJsonDocument(this->getAirports().toJson()).toJson());
bool s = CFileUtils::writeStringToFileInBackground(json, CFileUtils::appendFilePaths(directory.absolutePath(), "airports.json")); const bool s = CFileUtils::writeStringToFileInBackground(json, CFileUtils::appendFilePaths(directory.absolutePath(), "airports.json"));
if (!s) { return false; } if (!s) { return false; }
} }

View File

@@ -13,29 +13,29 @@ using namespace BlackMisc::Network;
namespace BlackCore namespace BlackCore
{ {
CWebReaderFlags::WebReader CWebReaderFlags::entityToReader(CEntityFlags::Entity entity) CWebReaderFlags::WebReader CWebReaderFlags::entitiesToReaders(CEntityFlags::Entity entities)
{ {
WebReader f = None; WebReader f = None;
if (entity.testFlag(CEntityFlags::AircraftIcaoEntity) || entity.testFlag(CEntityFlags::AirlineIcaoEntity) || entity.testFlag(CEntityFlags::CountryEntity)) if (entities.testFlag(CEntityFlags::AircraftIcaoEntity) || entities.testFlag(CEntityFlags::AirlineIcaoEntity) || entities.testFlag(CEntityFlags::CountryEntity))
{ {
f |= IcaoDataReader; f |= IcaoDataReader;
} }
if (entity.testFlag(CEntityFlags::ModelEntity) || entity.testFlag(CEntityFlags::DistributorEntity) || entity.testFlag(CEntityFlags::LiveryEntity)) if (entities.testFlag(CEntityFlags::ModelEntity) || entities.testFlag(CEntityFlags::DistributorEntity) || entities.testFlag(CEntityFlags::LiveryEntity))
{ {
f |= ModelReader; f |= ModelReader;
} }
if (entity.testFlag(CEntityFlags::AirportEntity)) if (entities.testFlag(CEntityFlags::AirportEntity))
{ {
f |= AirportReader; f |= AirportReader;
} }
if (entity.testFlag(CEntityFlags::DbInfoObjectEntity)) { f |= DbInfoDataReader; } if (entities.testFlag(CEntityFlags::DbInfoObjectEntity)) { f |= DbInfoDataReader; }
if (entity.testFlag(CEntityFlags::BookingEntity)) { f |= VatsimBookingReader; } if (entities.testFlag(CEntityFlags::BookingEntity)) { f |= VatsimBookingReader; }
if (entity.testFlag(CEntityFlags::VatsimDataFile)) { f |= VatsimDataReader; } if (entities.testFlag(CEntityFlags::VatsimDataFile)) { f |= VatsimDataReader; }
if (entity.testFlag(CEntityFlags::VatsimStatusFile)) { f |= VatsimStatusReader; } if (entities.testFlag(CEntityFlags::VatsimStatusFile)) { f |= VatsimStatusReader; }
if (entity.testFlag(CEntityFlags::MetarEntity)) { f |= VatsimMetarReader; } if (entities.testFlag(CEntityFlags::MetarEntity)) { f |= VatsimMetarReader; }
return f; return f;
} }
@@ -59,14 +59,30 @@ namespace BlackCore
return entities; return entities;
} }
bool CWebReaderFlags::isFromSwiftDb(BlackMisc::Network::CEntityFlags::Entity entity) bool CWebReaderFlags::isFromSwiftDb(CEntityFlags::Entity entity)
{ {
return isFromSwiftDb(entityToReader(entity)); Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
return isFromSwiftDb(entitiesToReaders(entity));
} }
bool CWebReaderFlags::isFromSwiftDb(WebReader reader) bool CWebReaderFlags::isFromSwiftDb(WebReader reader)
{ {
return reader.testFlag(ModelReader) || reader.testFlag(IcaoDataReader) || reader.testFlag(DbInfoDataReader); return reader.testFlag(ModelReader) || reader.testFlag(IcaoDataReader) || reader.testFlag(DbInfoDataReader) || reader.testFlag(AirportReader);
}
int CWebReaderFlags::numberOfReaders(WebReader readers)
{
int n = 0;
if (readers.testFlag(ModelReader)) { n++; }
if (readers.testFlag(IcaoDataReader)) { n++; }
if (readers.testFlag(AirportReader)) { n++; }
if (readers.testFlag(DbInfoDataReader)) { n++; }
return n;
}
bool CWebReaderFlags::isSingleReader(WebReader readers)
{
return numberOfReaders(readers) == 1;
} }
} // namespace } // namespace

View File

@@ -44,8 +44,8 @@ namespace BlackCore
}; };
Q_DECLARE_FLAGS(WebReader, WebReaderFlag) Q_DECLARE_FLAGS(WebReader, WebReaderFlag)
//! Relationship between reader and entity //! Relationship between readers and entities
static WebReader entityToReader(BlackMisc::Network::CEntityFlags::Entity entity); static WebReader entitiesToReaders(BlackMisc::Network::CEntityFlags::Entity entities);
//! Cast //! Cast
static WebReader webReaderFlagToWebReader(WebReaderFlag flag); static WebReader webReaderFlagToWebReader(WebReaderFlag flag);
@@ -58,6 +58,12 @@ namespace BlackCore
//! Reader for swift DB? //! Reader for swift DB?
static bool isFromSwiftDb(WebReader reader); static bool isFromSwiftDb(WebReader reader);
//! Number of readers
static int numberOfReaders(WebReader readers);
//! Is single reader
static bool isSingleReader(WebReader readers);
}; };
} // namespace } // namespace