/// ------------------------------------------------------------------------------------ /// <summary> /// Cleans the name of the project given the project type. (e.g. For an XML type, this /// will ensure that the name is rooted and ends with the correct extension) /// </summary> /// <param name="type">The type of the project.</param> /// <param name="name">The name of the project.</param> /// <returns>The cleaned up name with the appropriate extension</returns> /// ------------------------------------------------------------------------------------ private static string CleanUpNameForType(BackendProviderType type, string name) { if (string.IsNullOrEmpty(name)) { return(null); } string ext; switch (type) { case BackendProviderType.kXML: ext = LcmFileHelper.ksFwDataXmlFileExtension; break; default: return(name); } if (!SysPath.IsPathRooted(name)) { string sProjName = (SysPath.GetExtension(name) == ext) ? SysPath.GetFileNameWithoutExtension(name) : name; name = SysPath.Combine(SysPath.Combine(FwDirectoryFinder.ProjectsDirectory, sProjName), name); } // If the file doesn't have the expected extension and exists with the extension or // does not exist without it, we add the expected extension. if (SysPath.GetExtension(name) != ext && (FileUtils.SimilarFileExists(name + ext) || !FileUtils.SimilarFileExists(name))) { name += ext; } return(name); }
/// <summary> /// Constructor /// </summary> /// <param name="backendProviderType">Type of backend provider to create.</param> /// <param name="ui">The UI service.</param> /// <param name="dirs">The directories service.</param> /// <param name="settings">The LCM settings.</param> internal LcmServiceLocatorFactory(BackendProviderType backendProviderType, ILcmUI ui, ILcmDirectories dirs, LcmSettings settings) { m_backendProviderType = backendProviderType; m_ui = ui; m_dirs = dirs; m_settings = settings; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Protected constructor for initialization in tests /// </summary> /// <param name="projectsRootFolder">The root folder for projects (typically the /// default, but if these setings represent a project elsewhere, then this will be the /// root folder for this project).</param> /// <param name="projectName">Name of the project.</param> /// <param name="linkedFilesPath">The linked files path.</param> /// <param name="originalProjType">Type of the project before converting for backup.</param> /// <param name="destFolder">The destination folder.</param> /// <param name="fwVersion">The FieldWorks version.</param> /// ------------------------------------------------------------------------------------ protected BackupProjectSettings(string projectsRootFolder, string projectName, string linkedFilesPath, BackendProviderType originalProjType, string destFolder, string fwVersion) : base(projectsRootFolder, linkedFilesPath) { ProjectName = projectName; DbVersion = BackendProvider.ModelVersion; FwVersion = fwVersion; DatabaseFolder = (originalProjType == BackendProviderType.kXML || originalProjType == BackendProviderType.kSharedXML) ? ProjectPath : Path.GetTempPath(); DestinationFolder = destFolder; BackupTime = DateTime.Now; }
public ProjectIdentifier(string projectPath) { Path = System.IO.Path.GetFullPath(projectPath); string ext = System.IO.Path.GetExtension(Path); switch (ext.ToLowerInvariant()) { case LcmFileHelper.ksFwDataXmlFileExtension: m_backendProviderType = BackendProviderType.kXML; break; } }
public void CleanUpNameForType_Default_onlyName() { m_defaultBepType = BackendProviderType.kXML; string expectedPath = Path.Combine(Path.Combine(FwDirectoryFinder.ProjectsDirectory, "ape"), LcmFileHelper.GetXmlDataFileName("ape")); m_mockFileOs.AddExistingFile(expectedPath); ProjectId proj = new ProjectId("ape"); Assert.AreEqual(expectedPath, proj.Path); Assert.AreEqual(BackendProviderType.kXML, proj.Type); Assert.IsTrue(proj.IsValid); }
public void PortAllBEPsTestsUsingAnUnopenedSource( [Values(BackendProviderType.kXMLWithMemoryOnlyWsMgr)] BackendProviderType sourceType, [Values(BackendProviderType.kXMLWithMemoryOnlyWsMgr, BackendProviderType.kMemoryOnly)] BackendProviderType targetType) { var path = Path.Combine(Path.GetTempPath(), "FieldWorksTest"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var sourceBackendStartupParameters = GenerateBackendStartupParameters(false, sourceType); var targetBackendStartupParameters = GenerateBackendStartupParameters(true, targetType); var sourceGuids = new List <Guid>(); // Set up data source var sourceProjectId = new TestProjectId(sourceBackendStartupParameters.ProjectId.Type, sourceBackendStartupParameters.ProjectId.Path); using (LcmCache sourceCache = LcmCache.CreateCacheWithNewBlankLangProj(sourceProjectId, "en", "fr", "en", new DummyLcmUI(), m_lcmDirectories, new LcmSettings())) { // BEP is a singleton, so we shouldn't call Dispose on it. This will be done // by service locator. var sourceDataSetup = GetMainBEPInterface(sourceCache); sourceCache.ServiceLocator.GetInstance <IUndoStackManager>().Save(); // persist the new db so we can reopen it. sourceDataSetup.LoadDomain(BackendBulkLoadDomain.All); sourceGuids.AddRange(GetAllCmObjects(sourceCache).Select(obj => obj.Guid)); // Collect all source Guids } // Migrate source data to new BEP. IThreadedProgress progressDlg = new DummyProgressDlg(); var targetProjectId = new TestProjectId(targetBackendStartupParameters.ProjectId.Type, null); using (var targetCache = LcmCache.CreateCacheWithNoLangProj(targetProjectId, "en", new DummyLcmUI(), m_lcmDirectories, new LcmSettings())) { // BEP is a singleton, so we shouldn't call Dispose on it. This will be done // by service locator. var targetDataSetup = GetMainBEPInterface(targetCache); targetDataSetup.InitializeFromSource(new TestProjectId(targetBackendStartupParameters.ProjectId.Type, targetBackendStartupParameters.ProjectId.Path), sourceBackendStartupParameters, "en", progressDlg); targetDataSetup.LoadDomain(BackendBulkLoadDomain.All); CompareResults(sourceGuids, targetCache); } sourceGuids.Clear(); }
public void PortAllBEPsTestsUsingAnAlreadyOpenedSource( [Values(BackendProviderType.kXMLWithMemoryOnlyWsMgr, BackendProviderType.kMemoryOnly)] BackendProviderType sourceType, [Values(BackendProviderType.kXMLWithMemoryOnlyWsMgr, BackendProviderType.kMemoryOnly)] BackendProviderType targetType) { var sourceBackendStartupParameters = GenerateBackendStartupParameters(false, sourceType); var targetBackendStartupParameters = GenerateBackendStartupParameters(true, targetType); // Set up data source, but only do it once. var sourceGuids = new List <Guid>(); var sourceProjectId = new TestProjectId(sourceBackendStartupParameters.ProjectId.Type, sourceBackendStartupParameters.ProjectId.Path); using (var sourceCache = LcmCache.CreateCacheWithNewBlankLangProj(sourceProjectId, "en", "fr", "en", new DummyLcmUI(), m_lcmDirectories, new LcmSettings())) { // BEP is a singleton, so we shouldn't call Dispose on it. This will be done // by service locator. var sourceDataSetup = GetMainBEPInterface(sourceCache); // The source is created ex nihilo. sourceDataSetup.LoadDomain(sourceBackendStartupParameters.BulkLoadDomain); sourceGuids.AddRange(GetAllCmObjects(sourceCache).Select(obj => obj.Guid)); // Collect all source Guids DeleteDatabase(targetBackendStartupParameters); // Migrate source data to new BEP. var targetProjectId = new TestProjectId(targetBackendStartupParameters.ProjectId.Type, targetBackendStartupParameters.ProjectId.Path); using (var targetCache = LcmCache.CreateCacheCopy(targetProjectId, "en", new DummyLcmUI(), m_lcmDirectories, new LcmSettings(), sourceCache)) { // BEP is a singleton, so we shouldn't call Dispose on it. This will be done // by service locator. var targetDataSetup = GetMainBEPInterface(targetCache); targetDataSetup.LoadDomain(BackendBulkLoadDomain.All); CompareResults(sourceGuids, targetCache); } } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="FWProjectId"/> class. /// </summary> /// ------------------------------------------------------------------------------------ public FWProjectId(BackendProviderType type, string name) { m_type = type; Path = name; }
private BackendStartupParameter GenerateBackendStartupParameters(bool isTarget, BackendProviderType type) { var nameSuffix = (isTarget ? "_New" : "") + m_random.Next(1000); string name = null; switch (type) { case BackendProviderType.kXMLWithMemoryOnlyWsMgr: name = Path.Combine(m_projectsFolder.Path, LcmFileHelper.GetXmlDataFileName("TLP" + nameSuffix)); break; //case BackendProviderType.kMemoryOnly: name = null; } return(new BackendStartupParameter(true, BackendBulkLoadDomain.All, new TestProjectId(type, name))); }
public ParatextLexiconPluginProjectId(BackendProviderType backendProviderType, string projectPath) { m_backendProviderType = backendProviderType; Path = projectPath; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="ProjectId"/> class. /// </summary> /// <param name="type">The type of BEP.</param> /// <param name="name">The project name (for local projects, this can be a filename). /// </param> /// ------------------------------------------------------------------------------------ public ProjectId(BackendProviderType type, string name) { Debug.Assert(type != BackendProviderType.kMemoryOnly); m_type = type; m_path = CleanUpNameForType(type, name); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="TestProjectId"/> class. /// </summary> /// ------------------------------------------------------------------------------------ public TestProjectId(BackendProviderType type, string name) { Type = type; Path = name; }
public void Setup() { m_defaultBepType = BackendProviderType.kXML; m_mockFileOs = new MockFileOS(); FileUtils.Manager.SetFileAdapter(m_mockFileOs); }