///<summary>
        /// Returns an instance of an ldml in folder writing system reposistory.
        ///</summary>
        ///<param name="basePath">base location of the global writing system repository</param>
        ///<param name="migrationHandler">Callback if during the initialization any writing system id's are changed</param>
        ///<param name="loadProblemHandler">Callback if during the initialization any writing systems cannot be loaded</param>
        ///<param name="compatibilityMode"></param>
        public static LdmlInFolderWritingSystemRepository Initialize(
            string basePath,
            LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler,
            WritingSystemLoadProblemHandler loadProblemHandler,
            WritingSystemCompatibility compatibilityMode
            )
        {
            var migrator = new LdmlInFolderWritingSystemRepositoryMigrator(basePath, migrationHandler, compatibilityMode);

            migrator.Migrate();

            var instance = new LdmlInFolderWritingSystemRepository(basePath, compatibilityMode);

            instance.LoadAllDefinitions();

            // Call the loadProblemHandler with both migration problems and load problems
            var loadProblems = new List <WritingSystemRepositoryProblem>();

            loadProblems.AddRange(migrator.MigrationProblems);
            loadProblems.AddRange(instance.LoadProblems);
            if (loadProblems.Count > 0 && loadProblemHandler != null)
            {
                loadProblemHandler(loadProblems);
            }

            return(instance);
        }
 ///<summary>
 /// Returns an instance of an ldml in folder writing system reposistory.
 ///</summary>
 ///<param name="basePath">base location of the global writing system repository</param>
 ///<param name="migrationHandler">Callback if during the initialization any writing system id's are changed</param>
 ///<param name="loadProblemHandler">Callback if during the initialization any writing systems cannot be loaded</param>
 public static LdmlInFolderWritingSystemRepository Initialize(
     string basePath,
     LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler,
     WritingSystemLoadProblemHandler loadProblemHandler
     )
 {
     return(Initialize(basePath, migrationHandler, loadProblemHandler, WritingSystemCompatibility.Strict));
 }
Exemplo n.º 3
0
 public WritingSystemSetupDialog(
     string writingSystemRepositoryPath,
     LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler,
     WritingSystemLoadProblemHandler loadProblemHandler
     ) : this(LdmlInFolderWritingSystemRepository.Initialize(
                  writingSystemRepositoryPath,
                  migrationHandler,
                  loadProblemHandler
                  ))
 {
 }
Exemplo n.º 4
0
        public LdmlInFolderWritingSystemRepositoryMigrator(
            string ldmlPath,
            LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler,
            WritingSystemCompatibility compatibilityMode
            ) : base(WritingSystemDefinition.LatestWritingSystemDefinitionVersion, ldmlPath)
        {
            SearchPattern = "*.ldml";

            //The first versiongetter checks for the palaso:version node.
            //The DefaultVersion is a catchall that identifies any file as version 0 that the first version getter can't identify
            AddVersionStrategy(new WritingSystemLdmlVersionGetter(compatibilityMode));
            AddVersionStrategy(new DefaultVersion(0, 0));

            var auditLog = new WritingSystemChangeLog(
                new WritingSystemChangeLogDataMapper(Path.Combine(ldmlPath, "idchangelog.xml"))
                );

            AddMigrationStrategy(new LdmlVersion0MigrationStrategy(migrationHandler, auditLog, 0, compatibilityMode));
            // Version 0 strategy has been enhanced to also migrate version 1.
            AddMigrationStrategy(new LdmlVersion0MigrationStrategy(migrationHandler, auditLog, 1, compatibilityMode));
        }
Exemplo n.º 5
0
 public WritingSystemPrefsMigrator(string sourceFilePath, LdmlVersion0MigrationStrategy.MigrationHandler onWritingSystemTagChange)
 {
     _onWritingSystemTagChange = onWritingSystemTagChange;
     _sourceFilePath           = sourceFilePath;
 }
		///<summary>
		/// Initializes the migrator with the given basePath (i.e. excluding the version), and a callback
		/// for informing the consumer of changes to writing system tags during migration. Applications
		/// should ensure that all writing systems tags they store are updated accordingly when the callback
		/// is called.
		///</summary>
		///<param name="basePath"></param>
		///<param name="migrationHandler"></param>
		public GlobalWritingSystemRepositoryMigrator(string basePath, LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler)
		{
			Guard.AgainstNull(migrationHandler, "migrationHandler must be set");
			_migrationHandler = migrationHandler;
			BasePath = basePath;
		}
Exemplo n.º 7
0
 public LdmlInFolderWritingSystemRepositoryMigrator(
     string ldmlPath,
     LdmlVersion0MigrationStrategy.MigrationHandler onMigrationCallback
     ) : this(ldmlPath, onMigrationCallback, WritingSystemCompatibility.Strict)
 {
 }
Exemplo n.º 8
0
        ///<summary>
        /// This initializer is intended for tests as it allows setting of the basePath explicitly.
        ///</summary>
        ///<param name="basePath">base location of the global writing system repository</param>
        ///<param name="migrationHandler">Callback if during the initialization any writing system id's are changed</param>
        internal static GlobalWritingSystemRepository InitializeWithBasePath(string basePath, LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler)
        {
            lock (_padlock)
            {
                if (_instance == null)
                {
                    var migrator = new GlobalWritingSystemRepositoryMigrator(basePath, migrationHandler);
                    if (migrator.NeedsMigration())
                    {
                        migrator.Migrate();
                    }

                    _instance = new GlobalWritingSystemRepository(basePath);
                    _instance.LoadAllDefinitions();
                }
            }
            return(_instance);
        }
Exemplo n.º 9
0
 ///<summary>
 /// Initializes the global writing system repository.  Migrates any ldml files if required,
 /// notifying of any changes of writing system id that occured during migration.
 ///</summary>
 ///<param name="migrationHandler"></param>
 public static GlobalWritingSystemRepository Initialize(LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler)
 {
     return(InitializeWithBasePath(DefaultBasePath, migrationHandler));
 }
 public WritingSystemPrefsToLdmlMigrationStrategy(LdmlVersion0MigrationStrategy.MigrationHandler migrationCb, IAuditTrail changeLog)
 {
     _onMigrationCallback = migrationCb;
     _changeLog           = changeLog;
 }
 ///<summary>
 /// Initializes the migrator with the given basePath (i.e. excluding the version), and a callback
 /// for informing the consumer of changes to writing system tags during migration. Applications
 /// should ensure that all writing systems tags they store are updated accordingly when the callback
 /// is called.
 ///</summary>
 ///<param name="basePath"></param>
 ///<param name="migrationHandler"></param>
 public GlobalWritingSystemRepositoryMigrator(string basePath, LdmlVersion0MigrationStrategy.MigrationHandler migrationHandler)
 {
     Guard.AgainstNull(migrationHandler, "migrationHandler must be set");
     _migrationHandler = migrationHandler;
     BasePath          = basePath;
 }