/// <summary> /// Gets existing or create a new device template. /// </summary> private void PrepareTemplate(string fileName) { deviceTemplate = null; if (string.IsNullOrEmpty(fileName)) { WriteToLog(string.Format(Localization.UseRussian ? "{0} Ошибка: Не задан шаблон устройства для {1}" : "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption)); } else { TemplateDict templateDict = GetTemplateDictionary(); if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate)) { if (existingTemplate != null) { deviceTemplate = GetTemplateFactory().CreateDeviceTemplate(); deviceTemplate.CopyFrom(existingTemplate); } } else { DeviceTemplate newTemplate = GetTemplateFactory().CreateDeviceTemplate(); WriteToLog(string.Format(Localization.UseRussian ? "{0} Загрузка шаблона устройства из файла {1}" : "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName)); string filePath = Path.IsPathRooted(fileName) ? fileName : Path.Combine(AppDirs.ConfigDir, fileName); if (newTemplate.Load(filePath, out string errMsg)) { deviceTemplate = newTemplate; } else { WriteToLog(errMsg); } templateDict.Add(fileName, deviceTemplate); } } }
/// <summary> /// Gets the device template from the shared dictionary. /// </summary> protected virtual DeviceTemplate GetDeviceTemplate() { DeviceTemplate deviceTemplate = null; string fileName = PollingOptions.CmdLine.Trim(); if (string.IsNullOrEmpty(fileName)) { Log.WriteLine(string.Format(Locale.IsRussian ? "Ошибка: Не задан шаблон устройства для {0}" : "Error: Device template is undefined for {0}", Title)); } else { TemplateDict templateDict = GetTemplateDict(); if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate)) { deviceTemplate = existingTemplate; } else { Log.WriteLine(string.Format(Locale.IsRussian ? "Загрузка шаблона устройства из файла {0}" : "Load device template from file {0}", fileName)); DeviceTemplate newTemplate = CreateDeviceTemplate(); templateDict.Add(fileName, newTemplate); if (newTemplate.Load(Storage, fileName, out string errMsg)) { deviceTemplate = newTemplate; } else { Log.WriteLine(errMsg); } } } return(deviceTemplate); }