using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using Core.Common.Base.Workflow; using Core.Common.Utils; using Core.Common.Utils.Globalization; namespace Core.Common.Base { public class ApplicationCore : IDisposable { private readonly ActivityRunner activityRunner; private readonly List plugins; public ApplicationCore() { plugins = new List(); activityRunner = new ActivityRunner(); if (RunningActivityLogAppender.Instance != null) { RunningActivityLogAppender.Instance.ActivityRunner = ActivityRunner; } } public IEnumerable Plugins { get { return plugins; } } public IActivityRunner ActivityRunner { get { return activityRunner; } } public IEnumerable FileImporters { get { return Plugins.SelectMany(plugin => plugin.GetFileImporters()); } } public IEnumerable FileExporters { get { return Plugins.SelectMany(plugin => plugin.GetFileExporters()); } } public static void SetLanguageAndRegionalSettions(ApplicationSettingsBase tempUserSettings = null) { var settings = ConfigurationManager.AppSettings; var language = settings["language"]; if (language != null) { RegionalSettingsManager.Language = language; } if (tempUserSettings != null && tempUserSettings.Properties.Count > 0) { var realNumberFormat = tempUserSettings["realNumberFormat"]; if (realNumberFormat != null) { RegionalSettingsManager.RealNumberFormat = (string) realNumberFormat; } } } public string GetUserSettingsDirectoryPath() { return SettingsHelper.GetApplicationLocalUserSettingsDirectory(); } public void AddPlugin(ApplicationPlugin applicationPlugin) { plugins.Add(applicationPlugin); applicationPlugin.Activate(); } public void RemovePlugin(ApplicationPlugin applicationPlugin) { plugins.Remove(applicationPlugin); applicationPlugin.Deactivate(); } public void Dispose() { foreach (var plugin in Plugins.ToList()) { RemovePlugin(plugin); } if (RunningActivityLogAppender.Instance != null) { RunningActivityLogAppender.Instance.ActivityRunner = null; } } } }