private bool TryGetAnalyser(AnalyserId id, out IDataSourceAnalyser analyser) { if (id == AnalyserId.Empty) { analyser = new NoAnalyser(); return(true); } if (_analysis.TryGetAnalyser(id, out analyser)) { return(true); } return(false); }
public AnalysisPageViewModel(AnalysisId id, PageTemplate template, IAnalysis analysis, IAnalysisStorage analysisStorage, IPluginLoader pluginLoader) { _id = id; _template = template ?? throw new ArgumentNullException(nameof(template)); _analysis = analysis ?? throw new ArgumentNullException(nameof(analysis)); _analysisStorage = analysisStorage ?? throw new ArgumentNullException(nameof(analysisStorage)); _name = "New Page"; _deletePageCommand = new DelegateCommand(DeletePage, () => _canBeDeleted); _widgets = new List <IWidgetViewModel>(); _analysersPerWidget = new Dictionary <IWidgetViewModel, IDataSourceAnalyser>(); PageLayout = PageLayout.WrapHorizontal; var widgetPlugins = LoadRelevantPlugins(pluginLoader); foreach (var widgetTemplate in template.Widgets) { if (_analysis.TryGetAnalyser(widgetTemplate.AnalyserId, out var analyser)) { if (widgetPlugins.TryGetValue(widgetTemplate.LogAnalyserFactoryId, out var plugin)) { AddExistingWidget(plugin, widgetTemplate, analyser); } else { Log.WarnFormat("Unable to find plugin widget factory '{0}', widget '{1} ({2})' will NOT be displayed", widgetTemplate.LogAnalyserFactoryId, widgetTemplate.Title, widgetTemplate.Id); } } else { Log.WarnFormat("Unable to find analyser '{0}', widget '{1} ({2})' will NOT be displayed", widgetTemplate.AnalyserId, widgetTemplate.Title, widgetTemplate.Id); } } }