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