public static Config GetInstance() { if (_config == null) { _config = new Config(); var configPath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\config.xml"; if (File.Exists(configPath)) { var doc = XDocument.Load(configPath); foreach (var grabber in doc.Descendants("Grabber")) { var g = new GrabberSettings(); g.Path = grabber.Attribute("path").Value; if (string.IsNullOrEmpty(g.Path)) continue; // no path , nothing to do here g.ChannelPrefix = grabber.Attribute("channelPrefix") != null ? grabber.Attribute("channelPrefix").Value : string.Empty; var translationElement = grabber.Descendants("Translate").FirstOrDefault(); if (translationElement != null) { g.Translation = new GrabberTranslationSettings(); g.Translation.From = (Language)Enum.Parse(typeof(Language), translationElement.Attribute("From").Value); g.Translation.To = (Language)Enum.Parse(typeof(Language), translationElement.Attribute("To").Value); } var paramElement = grabber.Descendants("Parameters").FirstOrDefault(); if (paramElement != null) g.Parameters = paramElement.ToString(); _config.Grabbers.Add(g); } var outputElement = doc.Descendants("Output").FirstOrDefault(); if (outputElement != null) { var pathElement = outputElement.Descendants("Path").FirstOrDefault(); if (pathElement != null) _config.OutputPath = pathElement.Value; } var loggerElement = doc.Descendants("Logger").FirstOrDefault(); if (loggerElement != null && loggerElement.Attribute("Type") != null) { _config.LoggerType = loggerElement.Attribute("Type").Value; var loggerParameters = loggerElement.Descendants("Parameters").FirstOrDefault(); if (loggerParameters != null) _config.LoggerParameters = loggerParameters.ToString(); } var translatorCache = doc.Descendants("TranslatorCache").FirstOrDefault(); if (translatorCache != null && translatorCache.Attribute("Type") != null) { _config.TranslatorCacheSettings = new TranslatorCacheSettings(); _config.TranslatorCacheSettings.Type = TranslatorCacheSettingsType.File; _config.TranslatorCacheSettings.OutputFile = translatorCache.Attribute("OutputFile").Value; } var HaltOnGrabberErrorElement = doc.Descendants("HaltOnGrabberError").FirstOrDefault(); if (HaltOnGrabberErrorElement != null && !string.IsNullOrEmpty(HaltOnGrabberErrorElement.Value)) _config.HaltOnGrabberError = Convert.ToBoolean(HaltOnGrabberErrorElement.Value); } } return _config; }
private static ILogger GetLogger(Config config) { var log = (ILogger)Activator.CreateInstance(Type.GetType("XmlTvGenerator.Logger." + config.LoggerType + "Logger")); log.InitLog(config.LoggerParameters); return log; }