namespace JDSongConverter.Converters { /// /// The class that has the responsability to convert a set of songs /// public class ConverterManager { #region Variables public static ConverterManager Instance = new ConverterManager(); private static readonly Jd1ToJd2016Converter _jd1ToJd2016Converter = new Jd1ToJd2016Converter(); private static readonly Jd2ToJd2016Converter _jd2ToJd2016Converter = new Jd2ToJd2016Converter(); private static readonly Jd3ToJd2016Converter _jd3ToJd2016Converter = new Jd3ToJd2016Converter(); private static readonly Jd4ToJd2016Converter _jd4ToJd2015Converter = new Jd4ToJd2016Converter(); private static readonly Jd5EngineToJd2016Converter _jd5EngineToJd2016Converter = new Jd5EngineToJd2016Converter(); private static readonly Jd5CatalogToJd2016Converter _jd5CatalogToJd2016Converter = new Jd5CatalogToJd2016Converter(); private static readonly JD2015ToJd2016Converter _jd2015ToJd2016Converter = new JD2015ToJd2016Converter(); private static readonly Jd2016Updater _jd2016Updater = new Jd2016Updater(); private static readonly Jd2016Downgrader _jd2016Downgrader = new Jd2016Downgrader(); private static readonly Jd2016ToJd5Downgrader _jd2016ToJd5Downgrader = new Jd2016ToJd5Downgrader(); #endregion #region Constructor private ConverterManager() {} #endregion #region Methods public static Converter GetConverter(JDSongVersion srcVersion, JDSongVersion destination, JDFolderLayout srcFolderLayout = JDFolderLayout.Unknown) { if (srcVersion == JDSongVersion.JD1 && destination == JDSongVersion.JD2016) return _jd1ToJd2016Converter; if (srcVersion == JDSongVersion.JD2 && destination == JDSongVersion.JD2016) return _jd2ToJd2016Converter; if (srcVersion == JDSongVersion.JD3 && destination == JDSongVersion.JD2016) return _jd3ToJd2016Converter; if (srcVersion == JDSongVersion.JD4 && destination == JDSongVersion.JD2016) return _jd4ToJd2015Converter; if (srcVersion == JDSongVersion.JD5 && destination == JDSongVersion.JD2016) { if (srcFolderLayout == JDFolderLayout.Engine) { return _jd5EngineToJd2016Converter; } else if (srcFolderLayout == JDFolderLayout.CatalogProd) { return _jd5CatalogToJd2016Converter; } } if (srcVersion == JDSongVersion.JD2015 && destination == JDSongVersion.JD2016) return _jd2015ToJd2016Converter; if (srcVersion == JDSongVersion.JD2016 && destination == JDSongVersion.JD2016) return _jd2016Updater; if (srcVersion == JDSongVersion.JD2016 && destination == JDSongVersion.JD2015) return _jd2016Downgrader; if (srcVersion == JDSongVersion.JD2016 && destination == JDSongVersion.JD5) return _jd2016ToJd5Downgrader; return null; } #endregion } }