mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-26 02:35:38 +08:00
refs #787, utility functions for shared files
* entity to shared file, shared file for DB Info * CUrl path function * removed redundant code in CDbInfo::getEntity() and fixed CEntityFlags::singleEntityByName
This commit is contained in:
@@ -101,14 +101,14 @@ namespace BlackCore
|
|||||||
|
|
||||||
QString CGlobalSetup::buildBootstrapFileUrl(const QString &candidate)
|
QString CGlobalSetup::buildBootstrapFileUrl(const QString &candidate)
|
||||||
{
|
{
|
||||||
static const QString version(QString(versionString()).append("/"));
|
static const QString version(QString(CGlobalSetup::versionString()).append("/"));
|
||||||
if (candidate.endsWith("bootstrap.json")) { return candidate; }
|
if (candidate.endsWith("bootstrap.json")) { return candidate; }
|
||||||
CUrl url(candidate);
|
CUrl url(candidate);
|
||||||
if (candidate.contains("/bootstrap"))
|
if (candidate.contains("/bootstrap"))
|
||||||
{
|
{
|
||||||
url.appendPath("bootstrap.json");
|
url.appendPath("bootstrap.json");
|
||||||
}
|
}
|
||||||
else if (candidate.endsWith(versionString()) || candidate.endsWith(version))
|
else if (candidate.endsWith(CGlobalSetup::versionString()) || candidate.endsWith(version))
|
||||||
{
|
{
|
||||||
url.appendPath("/bootstrap/bootstrap.json");
|
url.appendPath("/bootstrap/bootstrap.json");
|
||||||
}
|
}
|
||||||
@@ -123,6 +123,26 @@ namespace BlackCore
|
|||||||
return url.getFullUrl();
|
return url.getFullUrl();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CUrl CGlobalSetup::buildDbDataDirectory(const CUrl &candidate)
|
||||||
|
{
|
||||||
|
static const QString version(QString(versionString()).append("/"));
|
||||||
|
if (candidate.pathEndsWith("dbdata") || candidate.pathEndsWith("dbdata/")) { return candidate; }
|
||||||
|
CUrl url(candidate);
|
||||||
|
if (candidate.pathEndsWith(versionString()) || candidate.pathEndsWith(version))
|
||||||
|
{
|
||||||
|
url.appendPath("/dbdata");
|
||||||
|
}
|
||||||
|
else if (candidate.pathEndsWith("shared") || candidate.pathEndsWith("shared/"))
|
||||||
|
{
|
||||||
|
url.appendPath(CGlobalSetup::versionString() + "/dbdata/");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
url.appendPath("shared/" + CGlobalSetup::versionString() + "/dbdata/");
|
||||||
|
}
|
||||||
|
return url;
|
||||||
|
}
|
||||||
|
|
||||||
CGlobalSetup CGlobalSetup::fromJsonFile(const QString &fileNameAndPath)
|
CGlobalSetup CGlobalSetup::fromJsonFile(const QString &fileNameAndPath)
|
||||||
{
|
{
|
||||||
CGlobalSetup setup;
|
CGlobalSetup setup;
|
||||||
@@ -213,6 +233,10 @@ namespace BlackCore
|
|||||||
|
|
||||||
s.append("FSD test servers: ");
|
s.append("FSD test servers: ");
|
||||||
s.append(getFsdTestServers().toQString(i18n));
|
s.append(getFsdTestServers().toQString(i18n));
|
||||||
|
s.append(separator);
|
||||||
|
|
||||||
|
s.append("Crash report server: ");
|
||||||
|
s.append(getCrashReportServerUrl().toQString(i18n));
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -242,12 +266,14 @@ namespace BlackCore
|
|||||||
return CVariant::fromValue(this->m_vatsimMetarsUrls);
|
return CVariant::fromValue(this->m_vatsimMetarsUrls);
|
||||||
case IndexUpdateInfo:
|
case IndexUpdateInfo:
|
||||||
return CVariant::fromValue(this->getUpdateInfoFileUrls());
|
return CVariant::fromValue(this->getUpdateInfoFileUrls());
|
||||||
case IndexBootstrap:
|
case IndexBootstrapFileUrls:
|
||||||
return CVariant::fromValue(this->getBootstrapFileUrls());
|
return CVariant::fromValue(this->getBootstrapFileUrls());
|
||||||
case IndexSwiftDbFiles:
|
case IndexSwiftDbFiles:
|
||||||
return CVariant::fromValue(this->getSwiftDbDataFileLocationUrls());
|
return CVariant::fromValue(this->getSwiftDbDataFileLocationUrls());
|
||||||
case IndexShared:
|
case IndexSharedUrls:
|
||||||
return CVariant::fromValue(this->m_sharedUrls);
|
return CVariant::fromValue(this->m_sharedUrls);
|
||||||
|
case IndexCrashReportServerUrl:
|
||||||
|
return CVariant::fromValue(this->m_crashReportServerUrl);
|
||||||
case IndexWasLoaded:
|
case IndexWasLoaded:
|
||||||
return CVariant::fromValue(this->m_wasLoaded);
|
return CVariant::fromValue(this->m_wasLoaded);
|
||||||
default:
|
default:
|
||||||
@@ -287,9 +313,12 @@ namespace BlackCore
|
|||||||
case IndexVatsimMetars:
|
case IndexVatsimMetars:
|
||||||
this->m_vatsimMetarsUrls = variant.value<CUrlList>();
|
this->m_vatsimMetarsUrls = variant.value<CUrlList>();
|
||||||
break;
|
break;
|
||||||
case IndexShared:
|
case IndexSharedUrls:
|
||||||
this->m_sharedUrls = variant.value<CUrlList>();
|
this->m_sharedUrls = variant.value<CUrlList>();
|
||||||
break;
|
break;
|
||||||
|
case IndexCrashReportServerUrl:
|
||||||
|
this->m_crashReportServerUrl = variant.value<CUrl>();
|
||||||
|
break;
|
||||||
case IndexWasLoaded:
|
case IndexWasLoaded:
|
||||||
this->m_wasLoaded = variant.toBool();
|
this->m_wasLoaded = variant.toBool();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -49,10 +49,11 @@ namespace BlackCore
|
|||||||
IndexVatsimMetars,
|
IndexVatsimMetars,
|
||||||
IndexVatsimData,
|
IndexVatsimData,
|
||||||
IndexSwiftDbFiles,
|
IndexSwiftDbFiles,
|
||||||
IndexBootstrap,
|
IndexBootstrapFileUrls,
|
||||||
|
IndexCrashReportServerUrl,
|
||||||
IndexUpdateInfo,
|
IndexUpdateInfo,
|
||||||
IndexWasLoaded,
|
IndexWasLoaded,
|
||||||
IndexShared
|
IndexSharedUrls
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Default constructor
|
//! Default constructor
|
||||||
@@ -83,7 +84,7 @@ namespace BlackCore
|
|||||||
bool hasSameType(const CGlobalSetup &otherSetup) const;
|
bool hasSameType(const CGlobalSetup &otherSetup) const;
|
||||||
|
|
||||||
//! Crash report server url
|
//! Crash report server url
|
||||||
BlackMisc::Network::CUrl getCrashreportServerUrl() const { return m_crashreportServerUrl; }
|
BlackMisc::Network::CUrl getCrashReportServerUrl() const { return m_crashReportServerUrl; }
|
||||||
|
|
||||||
//! Home page url
|
//! Home page url
|
||||||
BlackMisc::Network::CUrl getDbHomePageUrl() const;
|
BlackMisc::Network::CUrl getDbHomePageUrl() const;
|
||||||
@@ -166,6 +167,9 @@ namespace BlackCore
|
|||||||
//! Build bootstrap file URL
|
//! Build bootstrap file URL
|
||||||
static QString buildBootstrapFileUrl(const QString &candidate);
|
static QString buildBootstrapFileUrl(const QString &candidate);
|
||||||
|
|
||||||
|
//! Build the full dbdata directory URL
|
||||||
|
static BlackMisc::Network::CUrl buildDbDataDirectory(const BlackMisc::Network::CUrl &candidate);
|
||||||
|
|
||||||
//! Object initialized by JSON file
|
//! Object initialized by JSON file
|
||||||
static CGlobalSetup fromJsonFile(const QString &fileNameAndPath);
|
static CGlobalSetup fromJsonFile(const QString &fileNameAndPath);
|
||||||
|
|
||||||
@@ -174,7 +178,7 @@ namespace BlackCore
|
|||||||
int m_dbHttpPort = 80; //!< port
|
int m_dbHttpPort = 80; //!< port
|
||||||
int m_dbHttpsPort = 443; //!< SSL port
|
int m_dbHttpsPort = 443; //!< SSL port
|
||||||
bool m_development = false; //!< dev. version?
|
bool m_development = false; //!< dev. version?
|
||||||
BlackMisc::Network::CUrl m_crashreportServerUrl; //!< crash report server
|
BlackMisc::Network::CUrl m_crashReportServerUrl; //!< crash report server
|
||||||
BlackMisc::Network::CUrl m_dbRootDirectoryUrl; //!< Root directory of DB
|
BlackMisc::Network::CUrl m_dbRootDirectoryUrl; //!< Root directory of DB
|
||||||
BlackMisc::Network::CUrl m_vatsimBookingsUrl; //!< ATC bookings
|
BlackMisc::Network::CUrl m_vatsimBookingsUrl; //!< ATC bookings
|
||||||
BlackMisc::Network::CUrlList m_vatsimMetarsUrls; //!< METAR data
|
BlackMisc::Network::CUrlList m_vatsimMetarsUrls; //!< METAR data
|
||||||
@@ -191,7 +195,7 @@ namespace BlackCore
|
|||||||
CGlobalSetup,
|
CGlobalSetup,
|
||||||
BLACK_METAMEMBER(wasLoaded),
|
BLACK_METAMEMBER(wasLoaded),
|
||||||
BLACK_METAMEMBER(timestampMSecsSinceEpoch),
|
BLACK_METAMEMBER(timestampMSecsSinceEpoch),
|
||||||
BLACK_METAMEMBER(crashreportServerUrl),
|
BLACK_METAMEMBER(crashReportServerUrl),
|
||||||
BLACK_METAMEMBER(dbRootDirectoryUrl),
|
BLACK_METAMEMBER(dbRootDirectoryUrl),
|
||||||
BLACK_METAMEMBER(dbHttpPort),
|
BLACK_METAMEMBER(dbHttpPort),
|
||||||
BLACK_METAMEMBER(dbHttpsPort),
|
BLACK_METAMEMBER(dbHttpsPort),
|
||||||
|
|||||||
@@ -33,15 +33,27 @@ namespace BlackMisc
|
|||||||
CEntityFlags::Entity CDbInfo::getEntity() const
|
CEntityFlags::Entity CDbInfo::getEntity() const
|
||||||
{
|
{
|
||||||
if (this->m_entity != CEntityFlags::NoEntity) { return this->m_entity; }
|
if (this->m_entity != CEntityFlags::NoEntity) { return this->m_entity; }
|
||||||
if (this->m_tableName.isEmpty()) { return CEntityFlags::NoEntity; }
|
const QString tn(this->getTableName());
|
||||||
if (this->m_tableName.contains("airport", Qt::CaseInsensitive)) { return CEntityFlags::AirportEntity; }
|
return CEntityFlags::singleEntityByName(tn);
|
||||||
if (this->m_tableName.contains("airlineicao", Qt::CaseInsensitive)) { return CEntityFlags::AirlineIcaoEntity; }
|
}
|
||||||
if (this->m_tableName.contains("aircrafticao", Qt::CaseInsensitive)) { return CEntityFlags::AircraftIcaoEntity; }
|
|
||||||
if (this->m_tableName.contains("livery", Qt::CaseInsensitive)) { return CEntityFlags::LiveryEntity; }
|
const QString &CDbInfo::getSharedFileName() const
|
||||||
if (this->m_tableName.contains("aircraftmodel", Qt::CaseInsensitive)) { return CEntityFlags::ModelEntity; }
|
{
|
||||||
if (this->m_tableName.contains("country", Qt::CaseInsensitive)) { return CEntityFlags::CountryEntity; }
|
static const QString empty;
|
||||||
if (this->m_tableName.contains("distributor", Qt::CaseInsensitive)) { return CEntityFlags::DistributorEntity; }
|
CEntityFlags::Entity entity = CEntityFlags::singleEntityByName(this->getTableName());
|
||||||
return CEntityFlags::NoEntity;
|
switch (entity)
|
||||||
|
{
|
||||||
|
case CEntityFlags::AircraftIcaoEntity: { return sharedFileNames().at(0); }
|
||||||
|
case CEntityFlags::AirlineIcaoEntity: { return sharedFileNames().at(1); }
|
||||||
|
case CEntityFlags::AirportEntity: { return sharedFileNames().at(2); }
|
||||||
|
case CEntityFlags::CountryEntity: { return sharedFileNames().at(3); }
|
||||||
|
case CEntityFlags::DistributorEntity: { return sharedFileNames().at(4); }
|
||||||
|
case CEntityFlags::LiveryEntity: { return sharedFileNames().at(5); }
|
||||||
|
case CEntityFlags::ModelEntity: { return sharedFileNames().at(6); }
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CDbInfo::setEntity(CEntityFlags::Entity entity)
|
void CDbInfo::setEntity(CEntityFlags::Entity entity)
|
||||||
@@ -142,6 +154,29 @@ namespace BlackMisc
|
|||||||
dbInfo.setKeyAndTimestampFromDatabaseJson(json, prefix);
|
dbInfo.setKeyAndTimestampFromDatabaseJson(json, prefix);
|
||||||
return dbInfo;
|
return dbInfo;
|
||||||
}
|
}
|
||||||
} // namespace
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
|
const QStringList &CDbInfo::sharedFileNames()
|
||||||
|
{
|
||||||
|
static const QStringList names({"aircrafticao.json", "airlineicao.json", "airports.json", "countries.json", "distributors.json", "liveries.json", "models.json" });
|
||||||
|
return names;
|
||||||
|
}
|
||||||
|
|
||||||
|
const QString &CDbInfo::entityToSharedFileName(CEntityFlags::Entity entity)
|
||||||
|
{
|
||||||
|
static const QString empty;
|
||||||
|
switch (entity)
|
||||||
|
{
|
||||||
|
case CEntityFlags::AircraftIcaoEntity: return sharedFileNames().at(0);
|
||||||
|
case CEntityFlags::AirlineIcaoEntity: return sharedFileNames().at(1);
|
||||||
|
case CEntityFlags::AirportEntity: return sharedFileNames().at(2);
|
||||||
|
case CEntityFlags::CountryEntity: return sharedFileNames().at(3);
|
||||||
|
case CEntityFlags::DistributorEntity: return sharedFileNames().at(4);
|
||||||
|
case CEntityFlags::LiveryEntity: return sharedFileNames().at(5);
|
||||||
|
case CEntityFlags::ModelEntity: return sharedFileNames().at(6);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return empty;
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
} // namespace
|
||||||
|
|||||||
@@ -56,6 +56,9 @@ namespace BlackMisc
|
|||||||
//! Get entity (based on table name
|
//! Get entity (based on table name
|
||||||
Network::CEntityFlags::Entity getEntity() const;
|
Network::CEntityFlags::Entity getEntity() const;
|
||||||
|
|
||||||
|
//! The shared file name such as "airports.json"
|
||||||
|
const QString &getSharedFileName() const;
|
||||||
|
|
||||||
//! Set entity, should be in sync with a corresponding table name
|
//! Set entity, should be in sync with a corresponding table name
|
||||||
void setEntity(Network::CEntityFlags::Entity entity);
|
void setEntity(Network::CEntityFlags::Entity entity);
|
||||||
|
|
||||||
@@ -83,6 +86,12 @@ namespace BlackMisc
|
|||||||
//! From our database JSON format
|
//! From our database JSON format
|
||||||
static CDbInfo fromDatabaseJson(const QJsonObject &json, const QString &prefix = QString());
|
static CDbInfo fromDatabaseJson(const QJsonObject &json, const QString &prefix = QString());
|
||||||
|
|
||||||
|
//! The shared file names
|
||||||
|
static const QStringList &sharedFileNames();
|
||||||
|
|
||||||
|
//! Get shared file name
|
||||||
|
static const QString &entityToSharedFileName(Network::CEntityFlags::Entity entity);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_tableName; //!< table name
|
QString m_tableName; //!< table name
|
||||||
int m_entries; //!< number of entries
|
int m_entries; //!< number of entries
|
||||||
|
|||||||
@@ -144,12 +144,13 @@ namespace BlackMisc
|
|||||||
|
|
||||||
CEntityFlags::Entity CEntityFlags::singleEntityByName(const QString &name)
|
CEntityFlags::Entity CEntityFlags::singleEntityByName(const QString &name)
|
||||||
{
|
{
|
||||||
|
// order here is crucial
|
||||||
|
if (name.contains("model", Qt::CaseInsensitive)) { return ModelEntity; }
|
||||||
if (name.contains("aircraft", Qt::CaseInsensitive)) { return AircraftIcaoEntity; }
|
if (name.contains("aircraft", Qt::CaseInsensitive)) { return AircraftIcaoEntity; }
|
||||||
if (name.contains("airline", Qt::CaseInsensitive)) { return AirlineIcaoEntity; }
|
if (name.contains("airline", Qt::CaseInsensitive)) { return AirlineIcaoEntity; }
|
||||||
if (name.contains("airport", Qt::CaseInsensitive)) { return AirportEntity; }
|
if (name.contains("airport", Qt::CaseInsensitive)) { return AirportEntity; }
|
||||||
if (name.contains("distributor", Qt::CaseInsensitive)) { return DistributorEntity; }
|
if (name.contains("distributor", Qt::CaseInsensitive)) { return DistributorEntity; }
|
||||||
if (name.contains("countr", Qt::CaseInsensitive)) { return CountryEntity; }
|
if (name.contains("countr", Qt::CaseInsensitive)) { return CountryEntity; }
|
||||||
if (name.contains("model", Qt::CaseInsensitive)) { return ModelEntity; }
|
|
||||||
if (name.contains("liver", Qt::CaseInsensitive)) { return LiveryEntity; }
|
if (name.contains("liver", Qt::CaseInsensitive)) { return LiveryEntity; }
|
||||||
return NoEntity;
|
return NoEntity;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -161,6 +161,11 @@ namespace BlackMisc
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CUrl::pathEndsWith(const QString ending, Qt::CaseSensitivity cs) const
|
||||||
|
{
|
||||||
|
return m_path.endsWith(ending, cs);
|
||||||
|
}
|
||||||
|
|
||||||
CUrl CUrl::withAppendedQuery(const QString &query) const
|
CUrl CUrl::withAppendedQuery(const QString &query) const
|
||||||
{
|
{
|
||||||
if (query.isEmpty()) { return *this; }
|
if (query.isEmpty()) { return *this; }
|
||||||
|
|||||||
@@ -133,6 +133,9 @@ namespace BlackMisc
|
|||||||
//! Switch protocol
|
//! Switch protocol
|
||||||
CUrl withSwitchedScheme(const QString &protocol, int port) const;
|
CUrl withSwitchedScheme(const QString &protocol, int port) const;
|
||||||
|
|
||||||
|
//! Path ending with?
|
||||||
|
bool pathEndsWith(const QString ending, Qt::CaseSensitivity cs = Qt::CaseInsensitive) const;
|
||||||
|
|
||||||
//! \copydoc BlackMisc::Mixin::Index::propertyByIndex
|
//! \copydoc BlackMisc::Mixin::Index::propertyByIndex
|
||||||
CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const;
|
CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user