From 5ccd49722a7dba914c519987bfeca9d3aec810c0 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Fri, 8 May 2015 15:14:34 +0200 Subject: [PATCH] refs #409 adapt samples to use CAircraftMatcher --- samples/blackmiscsim/samplesfscommon.cpp | 23 +++++++-------- samples/blackmiscsim/samplesmodelmapping.cpp | 31 +++++++++++--------- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/samples/blackmiscsim/samplesfscommon.cpp b/samples/blackmiscsim/samplesfscommon.cpp index 16e197ac9..98db9a1a6 100644 --- a/samples/blackmiscsim/samplesfscommon.cpp +++ b/samples/blackmiscsim/samplesfscommon.cpp @@ -10,7 +10,8 @@ #include "samplesfscommon.h" #include "blackmisc/sampleutils.h" #include "blackmisc/simulation/fscommon/aircraftcfgentrieslist.h" -#include "blackmisc/simulation/fscommon/aircraftmapper.h" +#include "blackmisc/simulation/fscommon/aircraftmatcher.h" +#include "blackmisc/simulation/fscommon/aircraftcfgparser.h" #include #include @@ -29,13 +30,11 @@ namespace BlackSimTest */ int CSamplesFsCommon::samples(QTextStream &streamOut, QTextStream &streamIn) { - QString fsxDir = CSampleUtils::selectDirectory({"P:/FlightSimulatorX (MSI)/SimObjects", "P:/Temp/SimObjects"}, streamOut, streamIn); - CAircraftMapper mapper; - if (!mapper.changeCAircraftCfgEntriesDirectory(fsxDir)) - { - streamOut << "Wrong or empty directoy " << fsxDir << endl; - return 0; - } + QString fsxDir = CSampleUtils::selectDirectory({"C:/Program Files (x86)/Microsoft Games/Microsoft Flight Simulator X/SimObjects", + "C:/Flight Simulator 9/Aircraft"}, streamOut, streamIn); + + CAircraftCfgParser parser; + parser.changeRootDirectory(fsxDir); streamOut << "start reading, press RETURN" << endl; QString input = streamIn.readLine(); @@ -44,11 +43,11 @@ namespace BlackSimTest streamOut << "reading directly" << endl; QTime time; time.start(); - streamOut << "reading " << mapper.getAircraftCfgEntriesList().getRootDirectory() << endl; - mapper.readSimObjects(); - streamOut << "read entries: " << mapper.getAircraftCfgEntriesList().size() << " in " << time.restart() << "ms" << endl; + streamOut << "reading " << parser.getRootDirectory() << endl; + parser.parse(); + streamOut << "read entries: " << parser.getAircraftCfgEntriesList().size() << " in " << time.restart() << "ms" << endl; - CAircraftCfgEntriesList entriesList = mapper.getAircraftCfgEntriesList(); + CAircraftCfgEntriesList entriesList = parser.getAircraftCfgEntriesList(); QJsonDocument doc(entriesList.toJson()); QByteArray jsonArray(doc.toJson()); streamOut << "write JSON array with size " << jsonArray.size() << endl; diff --git a/samples/blackmiscsim/samplesmodelmapping.cpp b/samples/blackmiscsim/samplesmodelmapping.cpp index 483aac5b9..0dd01d6cb 100644 --- a/samples/blackmiscsim/samplesmodelmapping.cpp +++ b/samples/blackmiscsim/samplesmodelmapping.cpp @@ -10,8 +10,9 @@ #include "samplesmodelmapping.h" #include "blackmisc/blackmiscfreefunctions.h" #include "blackmisc/sampleutils.h" -#include "blackmisc/simulation/fscommon/vpilotmodelmappings.h" -#include "blackmisc/simulation/fscommon/aircraftmapper.h" +#include "blackmisc/simulation/fscommon/aircraftcfgparser.h" +#include "blackmisc/simulation/fscommon/modelmappingsprovidervpilot.h" +#include "blackmisc/simulation/fscommon/aircraftmatcher.h" #include #include @@ -32,37 +33,39 @@ namespace BlackSimTest { BlackMisc::registerMetadata(); - std::unique_ptr cvm(new CVPilotModelMappings(true)); + std::unique_ptr cvm(new CModelMappingsProviderVPilot(true)); bool s = cvm->read(); - streamOut << "directory: " << CVPilotModelMappings::standardMappingsDirectory() << endl; - streamOut << "loaded: " << BlackMisc::boolToYesNo(s) << " size: " << cvm->size() << endl; + streamOut << "directory: " << CModelMappingsProviderVPilot::standardMappingsDirectory() << endl; + streamOut << "loaded: " << BlackMisc::boolToYesNo(s) << " size: " << cvm->getMappingList().size() << endl; // mapper with rule set, handing over ownership - CAircraftMapper mapper(std::move(cvm)); + CAircraftCfgParser cfgParser; QString fsxDir = CSampleUtils::selectDirectory({QStringLiteral("P:/FlightSimulatorX (MSI)/SimObjects"), QStringLiteral("P:/Temp/SimObjects"), QStringLiteral("C:/Flight Simulator 9/Aircraft")}, streamOut, streamIn); - if (!mapper.changeCAircraftCfgEntriesDirectory(fsxDir)) + if (!cfgParser.changeRootDirectory(fsxDir)) { streamOut << "Wrong or empty directoy " << fsxDir << endl; return 0; } streamOut << "Start reading models" << endl; - mapper.changeCAircraftCfgEntriesDirectory(fsxDir); - mapper.readSimObjects(); - streamOut << "Read models: " << mapper.countAircraftCfgEntries() << endl; - streamOut << "Ambigious models: " << mapper.getAircraftCfgEntriesList().detectAmbiguousTitles().join(", ") << endl; + cfgParser.parse(CAircraftCfgParser::ModeBlocking); + streamOut << "Read models: " << cfgParser.getAircraftCfgEntriesList().size() << endl; + streamOut << "Ambigious models: " << cfgParser.getAircraftCfgEntriesList().detectAmbiguousTitles().join(", ") << endl; // sync definitions, remove redundant ones - streamOut << "Now synchronizing defintions: " << mapper.countMappingRules() << endl; - int afterSync = mapper.synchronize(); + CAircraftMatcher matcher(CAircraftMatcher::AllModes); + matcher.setModelMappingProvider(std::move(cvm)); + matcher.setInstalledModels(cfgParser.getAircraftCfgEntriesList().toAircraftModelList()); + streamOut << "Now synchronizing defintions: " << matcher.getAircraftMappingList().size() << endl; + int afterSync = matcher.synchronize(); streamOut << "After synchronizing definitions: " << afterSync << endl; CAircraftIcaoData icao("C172"); streamOut << "Searching for " << icao << endl; - streamOut << mapper.getAircraftMappingList().findByIcaoCodeExact(icao) << endl; + streamOut << matcher.getAircraftMappingList().findByIcaoCodeExact(icao) << endl; return 0; }