diff --git a/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h b/Code/Mantid/Framework/Kernel/inc/MantidKernel/ConfigService.h index 0a838d25b45678053447ec750581ce6323c6b4a6..b388acb0ac34ec9cd1837a2ddc6869ab42551e08 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 ffeea231fefb2fcd0c67e1a08eea1b22f76ce8c3..00582d3ed6e4588eb9fa0e3b8c0974484fa40f1e 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 714f911df3e7ceb9b7b6aec4dd9d41e81e5a84eb..1f2e77a7db24428903c4b401cc3ad7b0b8c79f32 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 3a2ae99896677a380ae9554fd6d1bf59ac09d6c9..7d33371fcfa0e1b778fc5289341601666079ed12 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()