/// <summary> /// Loads the configuration /// </summary> /// <returns>Root element instance</returns> public EFCachingConfigurationElement LoadConfiguration() { EFCachingConfigurationElement config = null; if (!File.Exists(this.FilePath)) { Logger.Instance.TraceError(string.Format("Configuration file '{0}' not found", ConfigFileName)); return(config); } try { ConfigurationBuilder configBuilder = new ConfigurationBuilder(string.Empty, this.FilePath); configBuilder.RegisterRootConfigurationObject(typeof(EFCachingConfigurationElement)); configBuilder.ReadConfiguration(); object[] conf = configBuilder.Configuration; if (conf != null && conf.Length > 0) { config = conf[0] as EFCachingConfigurationElement; } if (config == null) { Logger.Instance.TraceError("No 'configuration' element found in configuration file"); } } catch (Exception exc) { Logger.Instance.TraceError(exc.ToString()); } return(config); }
/// <summary> /// Save configuration in config file /// </summary> /// <param name="config">Configuration to save</param> public void SaveConfiguration(EFCachingConfigurationElement configuration) { try { StringBuilder sb = new StringBuilder(); if (configuration == null) { sb.Append("<configuration></configuration>"); } else { ConfigurationBuilder cb = new ConfigurationBuilder(new object[] { configuration }); cb.RegisterRootConfigurationObject(typeof(EFCachingConfigurationElement)); sb.Append(cb.GetXmlString()); } using (StreamWriter stream = new StreamWriter(this.FilePath, false)) { stream.Write(sb.ToString()); stream.Flush(); stream.Close(); } } catch (Exception exc) { Logger.Instance.TraceError(exc.Message); } }
/// <summary> /// Called when configuration file changes /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _watcher_Changed(object sender, FileSystemEventArgs e) { EFCachingConfigurationElement newConfig = this.LoadConfiguration(); if (newConfig != null) { ConfigurationUpdated(null, new ConfiguraitonUpdatedEventArgs() { Configuration = newConfig.GetAppConfig(Application.Instance.ApplicationId) }); } }
/// <summary> /// Load application configuration /// </summary> private void LoadConfiguration() { ///Cannot load configuration if no app-id is found in web.config or app.config if (this.ApplicationId.IsNullOrEmpty()) { Logger.Instance.TraceError("app-id not found in application config"); return; } ///Load configuration EFCachingConfigurationElement config = EFCachingConfiguration.Instance.LoadConfiguration(); ApplicationConfigurationElement appConfig = null; if (config != null) { appConfig = config.GetAppConfig(this.ApplicationId); this.LoadConfiguration(appConfig); if (appConfig != null) { CachePolicy.LoadConfig(appConfig.CachePolicy); AnalysisPolicy.LoadConfig(appConfig.AnalysisPolicy); //QueryLevelCachePolicy.LoadConfig(appConfig.QueryLevelCachePolicy); this.InitializeCache(appConfig); ///Start analysis if (this.Mode == ApplicationMode.Analysis) { AnalysisManager.Instance.Start(AnalysisPolicy.GetEffectivePolicy()); } } else { Logger.Instance.TraceError("No 'app-config' found in configuration file for the application-id = " + this.ApplicationId); } } }