public async Task <ImportModelDataResult> ImportModelData(IProjectContext projectContext, string file) { _importProblems.Clear(); var nullSession = new NullWriteSession(); var fileName = Path.GetFileNameWithoutExtension(file); var usedNames = projectContext.Project.RootNamespace.Namespaces.Select(element => element.Name); var name = _nameGenerator.FindUniqueName(fileName, usedNames); var modelNamespace = new Namespace { Name = name }; var modelData = _jsonFileReader.ReadModelDataFromJson(file, out var msg); if (modelData == null) { return(ImportModelDataResult.Failed($"Failed to import data from '{fileName}.json': {msg}")); } var datapool = modelData.Datapool; if (datapool != null) { ImportDatapool(nullSession, projectContext, datapool, modelNamespace); } var events = modelData.Events; if (events != null) { ImportEvents(nullSession, projectContext, events, modelNamespace); } if (_importProblems.Any()) { var message = string.Join(", ", _importProblems); return(ImportModelDataResult.Failed($"Failed to import data from '{fileName}'.json': {message}.")); } await _schedulerProvider.ExecuteModelAction( projectContext, session => AddModelNamespace( session, projectContext, modelNamespace)); return(ImportModelDataResult.Success($"Imported data from '{fileName}.json' to new namespace " + $"'{modelNamespace.Name}'.")); }
private static void ShowImportToastNotification(IWorkbenchViewModel workbenchViewModel, ImportModelDataResult result) { var priority = result.IsSuccess ? ToastNotificationPriority.Success : ToastNotificationPriority.Warning; var toastNotification = new ToastNotification { Header = result.Title, Content = result.Message, Priority = priority }; workbenchViewModel.ToastNotifier.Show(toastNotification); }