Use a map for GetDeviceUiKind

This makes it easier to add new device kinds, and reduces
the number of string comparisions when getting the device kind
Change-Id: Ife894fdb996adcccf73d2f9726c18a139590c132
Reviewed-on: https://weave-review.googlesource.com/1846
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/src/privet/device_ui_kind.cc b/src/privet/device_ui_kind.cc
index ed7c5ff..8909bed 100644
--- a/src/privet/device_ui_kind.cc
+++ b/src/privet/device_ui_kind.cc
@@ -4,42 +4,40 @@
 
 #include "src/privet/device_ui_kind.h"
 
+#include <unordered_map>
+
 #include <base/logging.h>
 
 namespace weave {
 namespace privet {
 
 std::string GetDeviceUiKind(const std::string& manifest_id) {
+
+  // Map of device short id to ui device kind
+  static const std::unordered_map<std::string, std::string> device_kind_map = {
+    {"AC", "accessPoint"},
+    {"AK", "aggregator"},
+    {"AM", "camera"},
+    {"AB", "developmentBoard"},
+    {"AH", "acHeating"},
+    {"AI", "light"},
+    {"AO", "lock"},
+    {"AE", "printer"},
+    {"AF", "scanner"},
+    {"AD", "speaker"},
+    {"AL", "storage"},
+    {"AJ", "toy"},
+    {"AA", "vendor"},
+    {"AN", "video"}
+  };
+
   CHECK_EQ(5u, manifest_id.size());
-  std::string kind = manifest_id.substr(0, 2);
-  if (kind == "AC")
-    return "accessPoint";
-  if (kind == "AK")
-    return "aggregator";
-  if (kind == "AM")
-    return "camera";
-  if (kind == "AB")
-    return "developmentBoard";
-  if (kind == "AH")
-    return "acHeating";
-  if (kind == "AI")
-    return "light";
-  if (kind == "AO")
-    return "lock";
-  if (kind == "AE")
-    return "printer";
-  if (kind == "AF")
-    return "scanner";
-  if (kind == "AD")
-    return "speaker";
-  if (kind == "AL")
-    return "storage";
-  if (kind == "AJ")
-    return "toy";
-  if (kind == "AA")
-    return "vendor";
-  if (kind == "AN")
-    return "video";
+  std::string short_id = manifest_id.substr(0, 2);
+
+  auto iter = device_kind_map.find(short_id);
+  if (iter != device_kind_map.end())
+    return iter->second;
+
   LOG(FATAL) << "Invalid model id: " << manifest_id;
   return std::string();
 }