diff --git a/DATabase/Import.cs b/DATabase/Import.cs index 733168db..da0dff29 100644 --- a/DATabase/Import.cs +++ b/DATabase/Import.cs @@ -22,6 +22,8 @@ namespace SabreTools // Regex File Name Patterns private static string _defaultPattern = @"^(.+?) - (.+?) \((.*) (.*)\)\.dat$"; private static string _defaultSpecialPattern = @"^(.+?) - (.+?) \((.*) (.*)\)\.xml$"; + private static string _goodPattern = @"^(Good.*?)_.*\.dat"; + private static string _goodXmlPattern = @"^(Good.*?)_.*\.xml"; private static string _mamePattern = @"^(.*)\.xml$"; private static string _maybeIntroPattern = @"(.*?) \[T-En\].*\((\d{8})\)\.dat$"; private static string _noIntroPattern = @"^(.*?) \((\d{8}-\d{6})_CM\)\.dat$"; @@ -88,6 +90,16 @@ namespace SabreTools fileinfo = Regex.Match(filename, _nonGoodSpecialPattern).Groups; type = DatType.NonGood; } + else if (Regex.IsMatch(filename, _goodPattern)) + { + fileinfo = Regex.Match(filename, _goodPattern).Groups; + type = DatType.Good; + } + else if (Regex.IsMatch(filename, _goodXmlPattern)) + { + fileinfo = Regex.Match(filename, _goodXmlPattern).Groups; + type = DatType.Good; + } else if (Regex.IsMatch(filename, _maybeIntroPattern)) { fileinfo = Regex.Match(filename, _maybeIntroPattern).Groups; @@ -170,6 +182,19 @@ namespace SabreTools switch (type) { + case DatType.Good: + if (!Remapping.Good.ContainsKey(fileinfo[1].Value)) + { + _logger.Error("The filename " + fileinfo[1].Value + " could not be mapped! Please check the mappings and try again"); + return false; + } + GroupCollection goodInfo = Regex.Match(Remapping.Good[fileinfo[1].Value], _remappedPattern).Groups; + + manufacturer = goodInfo[1].Value; + system = goodInfo[2].Value; + source = "Good"; + date = File.GetLastWriteTime(_filepath).ToString("yyyy-MM-dd HH:mm:ss"); + break; case DatType.MAME: if (!Remapping.MAME.ContainsKey(fileinfo[1].Value)) { diff --git a/SabreHelper/Enums.cs b/SabreHelper/Enums.cs index 20f5b102..5588980d 100644 --- a/SabreHelper/Enums.cs +++ b/SabreHelper/Enums.cs @@ -20,6 +20,7 @@ namespace SabreTools.Helper TruRip, NonGood, MaybeIntro, + Good, } /// diff --git a/SabreHelper/Mappings/Good.xml b/SabreHelper/Mappings/Good.xml new file mode 100644 index 00000000..016d48bc --- /dev/null +++ b/SabreHelper/Mappings/Good.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/SabreHelper/Remapping.cs b/SabreHelper/Remapping.cs index a65256dd..3e031a2f 100644 --- a/SabreHelper/Remapping.cs +++ b/SabreHelper/Remapping.cs @@ -11,6 +11,7 @@ namespace SabreTools.Helper public class Remapping { // Remapping classes represented by dictionaries (from, to) + public static Dictionary Good = new Dictionary(); public static Dictionary MAME = new Dictionary(); public static Dictionary MaybeIntro = new Dictionary(); public static Dictionary NoIntro = new Dictionary(); @@ -36,7 +37,7 @@ namespace SabreTools.Helper // Create array of dictionary names string[] remappings = { - "MAME", "MaybeIntro", "NoIntro", "NonGood", "Redump", "TOSEC", "TruRip", + "Good", "MAME", "MaybeIntro", "NoIntro", "NonGood", "Redump", "TOSEC", "TruRip", }; // Loop through and add all remappings @@ -83,6 +84,9 @@ namespace SabreTools.Helper { switch (mapping) { + case "Good": + Good.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); + break; case "MAME": MAME.Add(node.Attributes["from"].Value, node.Attributes["to"].Value); break; diff --git a/SabreHelper/SabreHelper.csproj b/SabreHelper/SabreHelper.csproj index d0157f0b..718a5c2a 100644 --- a/SabreHelper/SabreHelper.csproj +++ b/SabreHelper/SabreHelper.csproj @@ -92,6 +92,9 @@ + + Always + Always