Store the weave_settings by model manifest id

Create different weave_settings.json files for each model manifest id.
Since model manifest id is immutable on the server for a device id, this
prevents the model manifest id for a sample device from changing

Change-Id: I33ad00271efeca2f81ac4e1dcd27198cb1c576ca
Reviewed-on: https://weave-review.googlesource.com/1844
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/examples/provider/file_config_store.cc b/examples/provider/file_config_store.cc
index 7d4e31b..2214be8 100644
--- a/examples/provider/file_config_store.cc
+++ b/examples/provider/file_config_store.cc
@@ -16,11 +16,10 @@
 namespace examples {
 
 const char kSettingsDir[] = "/var/lib/weave/";
-const char kSettingsPath[] = "/var/lib/weave/weave_settings.json";
-const char kCategory[] = "example";
 
 FileConfigStore::FileConfigStore(bool disable_security, const std::string& model_id)
-    : disable_security_{disable_security}, model_id_{model_id} {}
+    : disable_security_{disable_security}, model_id_{model_id},
+      settings_path_{"/var/lib/weave/weave_settings_" + model_id + ".json"} {}
 
 bool FileConfigStore::LoadDefaults(Settings* settings) {
   char host_name[HOST_NAME_MAX] = {};
@@ -54,16 +53,16 @@
 }
 
 std::string FileConfigStore::LoadSettings() {
-  LOG(INFO) << "Loading settings from " << kSettingsPath;
-  std::ifstream str(kSettingsPath);
+  LOG(INFO) << "Loading settings from " << settings_path_;
+  std::ifstream str(settings_path_);
   return std::string(std::istreambuf_iterator<char>(str),
                      std::istreambuf_iterator<char>());
 }
 
 void FileConfigStore::SaveSettings(const std::string& settings) {
   CHECK(mkdir(kSettingsDir, S_IRWXU) == 0 || errno == EEXIST);
-  LOG(INFO) << "Saving settings to " << kSettingsPath;
-  std::ofstream str(kSettingsPath);
+  LOG(INFO) << "Saving settings to " << settings_path_;
+  std::ofstream str(settings_path_);
   str << settings;
 }
 
diff --git a/examples/provider/file_config_store.h b/examples/provider/file_config_store.h
index 8764cc5..578f940 100644
--- a/examples/provider/file_config_store.h
+++ b/examples/provider/file_config_store.h
@@ -16,15 +16,16 @@
 
 class FileConfigStore : public provider::ConfigStore {
  public:
-  explicit FileConfigStore(bool disable_security, const std::string& model_id);
+  FileConfigStore(bool disable_security, const std::string& model_id);
 
   bool LoadDefaults(Settings* settings) override;
   std::string LoadSettings() override;
   void SaveSettings(const std::string& settings) override;
 
  private:
-  bool disable_security_{false};
-  std::string model_id_{"AAAAA"};
+  const bool disable_security_;
+  const std::string model_id_;
+  const std::string settings_path_;
 };
 
 }  // namespace examples