From 80148f64a8b6a78397e73aac1f8d878726335349 Mon Sep 17 00:00:00 2001 From: Nick Draper <nick.draper@stfc.ac.uk> Date: Wed, 17 Jul 2013 15:23:20 +0100 Subject: [PATCH] re #7403 adding list methods to config service --- .../Kernel/inc/MantidKernel/ConfigService.h | 4 +++ .../Framework/Kernel/src/ConfigService.cpp | 29 +++++++++++++++++++ .../Kernel/src/MultiFileNameParser.cpp | 2 +- .../Framework/Kernel/test/ConfigServiceTest.h | 17 +++++++++++ 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h b/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h index 0a838d25b45..b388acb0ac3 100644 --- a/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h +++ b/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h @@ -189,6 +189,10 @@ namespace Mantid /// Load facility information from instrumentDir/Facilities.xml file void updateFacilities(const std::string& facilityName = ""); + /// Get the list of facilities + const std::vector<FacilityInfo*> getFacilities()const; + /// Get the list of facility names + const std::vector<std::string> getFacilityNames()const; /// Get the default facility const FacilityInfo& getFacility()const; /// Get a facility diff --git a/Code/Mantid/Framework/Kernel/src/ConfigService.cpp b/Code/Mantid/Framework/Kernel/src/ConfigService.cpp index ffeea231fef..00582d3ed6e 100644 --- a/Code/Mantid/Framework/Kernel/src/ConfigService.cpp +++ b/Code/Mantid/Framework/Kernel/src/ConfigService.cpp @@ -1566,6 +1566,35 @@ const InstrumentInfo & ConfigServiceImpl::getInstrument(const std::string& instr throw Exception::NotFoundError("Instrument", instrumentName); } +/** Gets a vector of the facility Information objects + * @return A vector of FacilityInfo objects + */ +const std::vector<FacilityInfo*> ConfigServiceImpl::getFacilities() const +{ + return m_facilities; +} + +/** Gets a vector of the facility names + * @return A vector of the facility Names + */ +const std::vector<std::string> ConfigServiceImpl::getFacilityNames()const +{ + auto names = std::vector<std::string>(m_facilities.size()); + auto itFacilities = m_facilities.begin(); + auto itNames = names.begin(); + for (; itFacilities != m_facilities.end(); ++itFacilities,++itNames) + { + *itNames = (**itFacilities).name(); + } + return names; +} + +/** Get the default facility + * @return the facility information object + */ +const FacilityInfo& ConfigServiceImpl::getFacility() const +{ + /** Get the default facility * @return the facility information object */ diff --git a/Code/Mantid/Framework/Kernel/src/MultiFileNameParser.cpp b/Code/Mantid/Framework/Kernel/src/MultiFileNameParser.cpp index 714f911df3e..1f2e77a7db2 100644 --- a/Code/Mantid/Framework/Kernel/src/MultiFileNameParser.cpp +++ b/Code/Mantid/Framework/Kernel/src/MultiFileNameParser.cpp @@ -198,7 +198,7 @@ namespace Kernel m_validInstNames() { ConfigServiceImpl & config = ConfigService::Instance(); - + FacilityInfo facility = config.getFacility(); std::string supportedFacilities = config.getString("supported.facilities"); std::vector<std::string> allFacilityNames; diff --git a/Code/Mantid/Framework/Kernel/test/ConfigServiceTest.h b/Code/Mantid/Framework/Kernel/test/ConfigServiceTest.h index 3a2ae998966..7d33371fcfa 100644 --- a/Code/Mantid/Framework/Kernel/test/ConfigServiceTest.h +++ b/Code/Mantid/Framework/Kernel/test/ConfigServiceTest.h @@ -115,6 +115,23 @@ public: // // Non existent facility // TS_ASSERT_THROWS(ConfigService::Instance().setFacility(""), Mantid::Kernel::Exception::NotFoundError); + } + + void testFacilityList() + { + std::vector<FacilityInfo*> facilities = ConfigService::Instance().getFacilities(); + std::vector<std::string> names = ConfigService::Instance().getFacilityNames(); + + TS_ASSERT_LESS_THAN(0,names.size()); + TS_ASSERT_EQUALS(facilities.size(),names.size()); + auto itFacilities = m_facilities.begin(); + auto itNames = names.begin(); + for (; itFacilities != m_facilities.end(); ++itFacilities,++itNames) + { + TS_ASSERT_EQUALS(*itNames, (**itFacilities).name()); + } + + } void testInstrumentSearch() -- GitLab