Catrobat.IDE.Core.Xml.VersionConverter.CatrobatVersionConverter.ConvertVersions C# (CSharp) Method

ConvertVersions() public static method

public static ConvertVersions ( string inputVersion, string outputVersion, System.Xml.Linq.XDocument document ) : VersionConverterStatus
inputVersion string
outputVersion string
document System.Xml.Linq.XDocument
return VersionConverterStatus
        public static VersionConverterStatus ConvertVersions(string inputVersion, string outputVersion, XDocument document)
        {
            if (inputVersion == outputVersion)
            {
                return VersionConverterStatus.NoError;
            }


            var error = VersionConverterStatus.NoError;
            var versionPair = new CatrobatVersionPair(inputVersion, outputVersion);

            if (double.Parse(inputVersion, NumberStyles.Any) < XmlConstants.MinimumCodeVersion)
            {
                return VersionConverterStatus.VersionTooOld;
            }

            if (ConvertersPaths.ContainsKey(versionPair))
            {
                var path = ConvertersPaths[versionPair];

                if (path.Count == 0)
                {
                    error = VersionConverterStatus.VersionTooOld;
                }
                else
                {
                    try
                    {
                        foreach (var pair in path)
                        {
                            if (pair.IsInverse)
                            {
                                var inversePath = new CatrobatVersionPair(pair.OutputVersion, pair.InputVersion);
                                Converters[inversePath].ConvertBack(document);
                            }
                            else
                            {
                                Converters[pair].Convert(document);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        error = VersionConverterStatus.ProgramDamaged;
                    }
                }
            }
            else
            {
                error = VersionConverterStatus.ProgramDamaged;
            }

            return error;
        }