public void TestThatSharedSettingOpensXmlDataTypeAsSharedXml() { const string dbName = "ProjectSharingTest"; SureRemoveDb(dbName); var preExistingDirs = new List <string>(Directory.GetDirectories(m_projectsDirectory)); try { // create project string dbFileName = LcmCache.CreateNewLangProj(new DummyProgressDlg(), dbName, m_lcmDirectories, new SingleThreadedSynchronizeInvoke()); // Set up test file for project sharing setting var testFileStore = new FileSettingsStore(LexiconSettingsFileHelper.GetProjectLexiconSettingsPath(Path.GetDirectoryName(dbFileName))); var dataMapper = new ProjectLexiconSettingsDataMapper(testFileStore); dataMapper.Write(new ProjectLexiconSettings { ProjectSharing = true }); // SUT // Request XML backend with project settings that have ProjectSharing set to true var projectId = new TestProjectId(BackendProviderType.kXML, dbFileName); using (var cache = LcmCache.CreateCacheFromExistingData(projectId, "en", m_ui, m_lcmDirectories, new LcmSettings(), new DummyProgressDlg())) { var dataSetup = cache.ServiceLocator.GetInstance <IDataSetup>(); Assert.IsTrue(dataSetup is SharedXMLBackendProvider, "The project should have been opened as shared xml."); } } finally { RemoveTestDirs(preExistingDirs, Directory.GetDirectories(m_projectsDirectory)); } }
/// <summary/> public static bool IsProjectSharingEnabled(string projectFolder) { ISettingsStore settingStore = new FileSettingsStore(LexiconSettingsFileHelper.GetProjectLexiconSettingsPath(projectFolder)); var settingsMapper = new ProjectLexiconSettingsDataMapper(settingStore); var settings = new ProjectLexiconSettings(); settingsMapper.Read(settings); return settings.ProjectSharing; }
public void PerformMigration(IDomainObjectDTORepository repoDto) { DataMigrationServices.CheckVersionNumber(repoDto, 7000070); // Skip migrating the global repository if we're just running tests. Slow and may not be wanted. // In a real project we do this first; thus if by any chance a WS is differently renamed in // the two folders, the renaming that is right for this project wins. if (!repoDto.ProjectFolder.StartsWith(Path.GetTempPath())) { var globalMigrator = new GlobalWritingSystemRepositoryMigrator(GlobalWritingSystemRepository.DefaultBasePath, versionToMigrateTo: 3); // first migrate any existing global writing systems in the new global writing system directory if (globalMigrator.NeedsMigration()) { globalMigrator.Migrate(); } string migratedFilePath = Path.Combine(LcmFileHelper.OldGlobalWritingSystemStoreDirectory, ".migrated"); if (Directory.Exists(LcmFileHelper.OldGlobalWritingSystemStoreDirectory) && !File.Exists(migratedFilePath)) { // copy over all FW global writing systems from the old directory to the new directory and migrate string globalRepoPath = Path.Combine(GlobalWritingSystemRepository.DefaultBasePath, "3"); if (!Directory.Exists(globalRepoPath)) { GlobalWritingSystemRepository.CreateGlobalWritingSystemRepositoryDirectory(globalRepoPath); } CopyDirectoryContents(LcmFileHelper.OldGlobalWritingSystemStoreDirectory, globalRepoPath); globalMigrator.Migrate(); // add ".migrated" file to indicate that this folder has been migrated already File.WriteAllText(migratedFilePath, string.Format("The writing systems in this directory have been migrated to {0}.", globalRepoPath)); } } string ldmlFolder = Path.Combine(repoDto.ProjectFolder, LcmFileHelper.ksWritingSystemsDir); var migrator = new LdmlInFolderWritingSystemRepositoryMigrator(ldmlFolder, NoteMigration, 3); migrator.Migrate(); string sharedSettingsPath = LexiconSettingsFileHelper.GetSharedSettingsPath(repoDto.ProjectFolder); if (!Directory.Exists(sharedSettingsPath)) { Directory.CreateDirectory(sharedSettingsPath); } var projectSettingsStore = new FileSettingsStore(LexiconSettingsFileHelper.GetProjectLexiconSettingsPath(repoDto.ProjectFolder)); var userSettingsStore = new FileSettingsStore(LexiconSettingsFileHelper.GetUserLexiconSettingsPath(repoDto.ProjectFolder)); var repo = new CoreLdmlInFolderWritingSystemRepository(ldmlFolder, projectSettingsStore, userSettingsStore); migrator.ResetRemovedProperties(repo); // migrate local keyboard settings from CoreImpl application settings to new lexicon user settings file // skip if we're running unit tests, could interfere with the test results string localKeyboards; if (!repoDto.ProjectFolder.StartsWith(Path.GetTempPath()) && TryGetLocalKeyboardsSetting(out localKeyboards)) { if (localKeyboards.Length > 0) { XElement keyboardsElem = XElement.Parse(localKeyboards); foreach (XElement keyboardElem in keyboardsElem.Elements("keyboard")) { var wsId = (string)keyboardElem.Attribute("ws"); CoreWritingSystemDefinition ws; if (repo.TryGet(wsId, out ws)) { var layout = (string)keyboardElem.Attribute("layout"); var locale = (string)keyboardElem.Attribute("locale"); string keyboardId = string.IsNullOrEmpty(locale) ? layout : $"{locale}_{layout}"; IKeyboardDefinition keyboard; if (!Keyboard.Controller.TryGetKeyboard(keyboardId, out keyboard)) { keyboard = Keyboard.Controller.CreateKeyboard(keyboardId, KeyboardFormat.Unknown, Enumerable.Empty <string>()); } ws.LocalKeyboard = keyboard; } } } repo.Save(); } var wsIdMigrator = new WritingSystemIdMigrator(repoDto, TryGetNewLangTag, "*.fwlayout"); wsIdMigrator.Migrate(); DataMigrationServices.IncrementVersionNumber(repoDto); }