private void LoadPowerBiTemplateFile(string path) { SourceType = ModelSourceType.Pbit; Source = path; pbit = new PowerBiTemplate(path); InitModelFromJson(pbit.ModelJson); }
/// <summary> /// Loads an Analysis Services tabular database (Compatibility Level 1200 or newer) from a file /// or folder. /// </summary> /// <param name="path"></param> public TabularModelHandler(string path, TabularModelHandlerSettings settings = null) { Settings = settings ?? TabularModelHandlerSettings.Default; Singleton = this; server = null; var fi = new FileInfo(path); string data; if (fi.Exists && fi.Extension == ".pbit") { pbit = new PowerBiTemplate(path); data = pbit.ModelJson; SourceType = ModelSourceType.Pbit; Source = path; } else if (!fi.Exists || fi.Name == "database.json") { if (fi.Name == "database.json") { path = fi.DirectoryName; } if (Directory.Exists(path)) { data = CombineFolderJson(path); } else { throw new FileNotFoundException(); } SourceType = ModelSourceType.Folder; Source = path; } else { data = File.ReadAllText(path); SourceType = ModelSourceType.File; Source = path; } database = TOM.JsonSerializer.DeserializeDatabase(data); CompatibilityLevel = database.CompatibilityLevel; Status = "File loaded succesfully."; Init(); var serializeOptionsAnnotation = Model.GetAnnotation("TabularEditor_SerializeOptions"); if (serializeOptionsAnnotation != null) { SerializeOptions = JsonConvert.DeserializeObject <SerializeOptions>(serializeOptionsAnnotation); } // Check if translations / perspectives are stored locally in the model: if (SourceType == ModelSourceType.Folder && (SerializeOptions.LocalTranslations || SerializeOptions.LocalPerspectives)) { UndoManager.Enabled = false; BeginUpdate("Apply translations and perspectives from annotations"); var translationsJson = Model.GetAnnotation("TabularEditor_Cultures"); if (SerializeOptions.LocalTranslations && translationsJson != null) { Model.Cultures.FromJson(translationsJson); foreach (var item in AllTranslatableObjects) { item.LoadTranslations(); } } var perspectivesJson = Model.GetAnnotation("TabularEditor_Perspectives"); if (SerializeOptions.LocalPerspectives && perspectivesJson != null) { Model.Perspectives.FromJson(perspectivesJson); foreach (var item in AllPerspectiveObjects) { item.LoadPerspectives(); } } EndUpdate(); UndoManager.Enabled = true; } }