From 0ccbdd2a83d214364e310e4c0b6146ec42264d7b Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 16 Feb 2018 00:35:58 -0800 Subject: [PATCH] [Utilities, DatFile] Create another factory --- SabreTools.Library/DatFiles/DatFile.cs | 11 +++++----- SabreTools.Library/Tools/Utilities.cs | 29 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/SabreTools.Library/DatFiles/DatFile.cs b/SabreTools.Library/DatFiles/DatFile.cs index ea0477ac..ead6efca 100644 --- a/SabreTools.Library/DatFiles/DatFile.cs +++ b/SabreTools.Library/DatFiles/DatFile.cs @@ -3625,13 +3625,14 @@ namespace SabreTools.Library.DatFiles if (Romba) { GZipArchive archive = new GZipArchive(item); - BaseFile rom = archive.GetTorrentGZFileInfo(); + BaseFile baseFile = archive.GetTorrentGZFileInfo(); // If the rom is valid, write it out - if (rom != null && rom.Filename != null) + if (baseFile != null && baseFile.Filename != null) { // Add the list if it doesn't exist already - Add(rom.Size + "-" + rom.CRC, new Rom(rom)); + Rom rom = new Rom(baseFile); + Add(rom.Size + "-" + rom.CRC, rom); Globals.Logger.User("File added: {0}", Path.GetFileNameWithoutExtension(item) + Environment.NewLine); } else @@ -3688,7 +3689,7 @@ namespace SabreTools.Library.DatFiles // First take care of the found items Parallel.ForEach(extracted, Globals.ParallelOptions, rom => { - DatItem datItem = (rom.Type == FileType.CHD ? (DatItem)(new Disk(rom)) : (DatItem)(new Rom(rom))); + DatItem datItem = Utilities.GetDatItem(rom); ProcessFileHelper(newItem, datItem, basePath, @@ -4290,7 +4291,7 @@ namespace SabreTools.Library.DatFiles { foreach (BaseFile entry in entries) { - DatItem datItem = (entry.Type == FileType.CHD ? (DatItem)(new Disk(entry)) : (DatItem)(new Rom(entry))); + DatItem datItem = Utilities.GetDatItem(entry); usedInternally &= RebuildIndividualFile(datItem, file, outDir, date, inverse, outputFormat, romba, updateDat, !isTorrentGzip /* isZip */, headerToCheckAgainst); } diff --git a/SabreTools.Library/Tools/Utilities.cs b/SabreTools.Library/Tools/Utilities.cs index 70e4fe7c..e1eb5c2b 100644 --- a/SabreTools.Library/Tools/Utilities.cs +++ b/SabreTools.Library/Tools/Utilities.cs @@ -683,6 +683,35 @@ namespace SabreTools.Library.Tools } } + /// + /// Create a specific type of DatItem to be used based on a BaseFile + /// + /// BaseFile containing information to be created + /// DatItem of the specific internal type that corresponds to the inputs + public static DatItem GetDatItem(BaseFile baseFile) + { + switch (baseFile.Type) + { + case FileType.CHD: + return new Disk(baseFile); + case FileType.GZipArchive: + case FileType.LRZipArchive: + case FileType.LZ4Archive: + case FileType.None: + case FileType.RarArchive: + case FileType.SevenZipArchive: + case FileType.TapeArchive: + case FileType.XZArchive: + case FileType.ZipArchive: + case FileType.ZPAQArchive: + case FileType.ZstdArchive: + return new Rom(baseFile); + case FileType.Folder: + default: + return null; + } + } + /// /// Get DatFormat value from input string ///