public void Save(EditConfigsViewModel model)
 {
     var configParser = new DefaultConfigParser();
     foreach (var config in model.Configs)
     {
         //find the generator node, if GeneratorTypeName is diff than the service, add  it as a component
         var generator = config.Components.FirstOrDefault(x => { return x.ServiceTypeName.Equals("HyperActive.Core.Generators.ActiveRecordGenerator, HyperActive"); });
         if (generator != null && !String.IsNullOrEmpty(config.GeneratorTypeName))
         {
             generator.ServiceImplementationTypeName = config.GeneratorTypeName;
         }
     }
     var options = Convert(model.Configs);
     configParser.WriteXml(model.ConfigFilePath, options);
 }
        public EditConfigsViewModel EditConfigs(string configFilePath)
        {
            var result = new EditConfigsViewModel();
            result.ConfigFilePath = configFilePath;
            var configParser = new DefaultConfigParser();
            var options = configParser.ParseXml(File.ReadAllText(configFilePath));
            var models = Convert(options);
            foreach (var model in models)
            {
                var generator = model.Components.FirstOrDefault(x => { return x.ServiceTypeName.Equals("HyperActive.Core.Generators.ActiveRecordGenerator, HyperActive"); });
                if (generator != null && !String.IsNullOrEmpty(generator.ServiceImplementationTypeName))
                {
                    model.GeneratorTypeName = generator.ServiceImplementationTypeName;
                }
                result.Configs.Add(model);
            }

            //ensure that each config section has at least one component node which defines the AR generator
            return result;
        }
 public EditConfigsViewModel CreateConfig()
 {
     var result = new EditConfigsViewModel();
     result.Configs.Add(new ConfigurationOptionsViewModel());
     return result;
 }