diff --git a/gaseous-signature-ingestor/Program.cs b/gaseous-signature-ingestor/Program.cs index e40afb1..6746f5f 100644 --- a/gaseous-signature-ingestor/Program.cs +++ b/gaseous-signature-ingestor/Program.cs @@ -175,11 +175,11 @@ if (Directory.Exists(tosecXML)) sql = "INSERT INTO signatures_platforms (platform) VALUES (@platform); SELECT LAST_INSERT_ID()"; sigDB = db.ExecuteCMD(sql, dbDict); - gameSystem = int.Parse(sigDB.Rows[0][0].ToString()); + gameSystem = (int)sigDB.Rows[0][0]; } else { - gameSystem = int.Parse(sigDB.Rows[0][0].ToString()); + gameSystem = (int)sigDB.Rows[0][0]; } } dbDict.Add("systemid", gameSystem); @@ -196,11 +196,11 @@ if (Directory.Exists(tosecXML)) // entry not present, insert it sql = "INSERT INTO signatures_publishers (publisher) VALUES (@publisher); SELECT LAST_INSERT_ID()"; sigDB = db.ExecuteCMD(sql, dbDict); - gamePublisher = int.Parse(sigDB.Rows[0][0].ToString()); + gamePublisher = (int)sigDB.Rows[0][0]; } else { - gamePublisher = int.Parse(sigDB.Rows[0][0].ToString()); + gamePublisher = (int)sigDB.Rows[0][0]; } } dbDict.Add("publisherid", gamePublisher); @@ -218,11 +218,11 @@ if (Directory.Exists(tosecXML)) "(@name, @description, @year, @publisherid, @demo, @systemid, @systemvariant, @video, @country, @language, @copyright); SELECT LAST_INSERT_ID()"; sigDB = db.ExecuteCMD(sql, dbDict); - gameId = int.Parse(sigDB.Rows[0][0].ToString()); + gameId = (int)sigDB.Rows[0][0]; } else { - gameId = int.Parse(sigDB.Rows[0][0].ToString()); + gameId = (int)sigDB.Rows[0][0]; } // store rom @@ -268,11 +268,11 @@ if (Directory.Exists(tosecXML)) sigDB = db.ExecuteCMD(sql, dbDict); - romId = int.Parse(sigDB.Rows[0][0].ToString()); + romId = (int)sigDB.Rows[0][0]; } else { - romId = int.Parse(sigDB.Rows[0][0].ToString()); + romId = (int)sigDB.Rows[0][0]; } } } diff --git a/gaseous-signature-parser/Parsers/TosecParser.cs b/gaseous-signature-parser/Parsers/TosecParser.cs index 73a43e3..d63c4f8 100644 --- a/gaseous-signature-parser/Parsers/TosecParser.cs +++ b/gaseous-signature-parser/Parsers/TosecParser.cs @@ -351,131 +351,142 @@ namespace gaseous_signature_parser.parsers case "rom": RomSignatureObject.Game.Rom romObject = new RomSignatureObject.Game.Rom(); - romObject.Name = xmlGameDetail.Attributes["name"]?.Value; - romObject.Size = UInt64.Parse(xmlGameDetail.Attributes["size"]?.Value); - romObject.Crc = xmlGameDetail.Attributes["crc"]?.Value; - romObject.Md5 = xmlGameDetail.Attributes["md5"]?.Value; - romObject.Sha1 = xmlGameDetail.Attributes["sha1"]?.Value; - - // parse name - string[] romNameTokens = romDescription.Split("("); - foreach (string rawToken in romNameTokens) { - string[] tokenSplit = rawToken.Split("["); - - // replace the extra closing bracket - string token = tokenSplit[0].Replace(")", "").Trim(); - - // check for copyright - if (TOSECDevelopment.ContainsKey(token)) + if (xmlGameDetail != null) + { + romObject.Name = xmlGameDetail.Attributes["name"]?.Value; + if (xmlGameDetail.Attributes["size"]?.Value != null) { - romObject.DevelopmentStatus = token; + romObject.Size = UInt64.Parse(xmlGameDetail.Attributes["size"]?.Value); } - - // check for media type - if (token.StartsWith("Disc") || - token.StartsWith("Disk") || - token.StartsWith("File") || - token.StartsWith("Part") || - token.StartsWith("Side") || - token.StartsWith("Tape")) + else { - string[] tokens = token.Split(" "); - switch (tokens[0]) + romObject.Size = 0; + } + romObject.Crc = xmlGameDetail.Attributes["crc"]?.Value; + romObject.Md5 = xmlGameDetail.Attributes["md5"]?.Value; + romObject.Sha1 = xmlGameDetail.Attributes["sha1"]?.Value; + + // parse name + string[] romNameTokens = romDescription.Split("("); + foreach (string rawToken in romNameTokens) + { + string[] tokenSplit = rawToken.Split("["); + + // replace the extra closing bracket + string token = tokenSplit[0].Replace(")", "").Trim(); + + // check for copyright + if (TOSECDevelopment.ContainsKey(token)) { - case "Disc": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disc; - break; - case "Disk": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disk; - break; - case "File": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.File; - break; - case "Part": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Part; - break; - case "Side": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Side; - break; - case "Tape": - romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Tape; - break; + romObject.DevelopmentStatus = token; } - romObject.RomTypeMedia = token; - } - // check for media label - if (token.Length > 0 && - (token + ")") == gameNameTokens.Last() && - ( - token != romObject.RomTypeMedia && - token != gameObject.Publisher && - token != gameObject.SystemVariant && - token != gameObject.Video && - token != gameObject.Country && - token != gameObject.Copyright && - token != gameObject.Language && - token != romObject.DevelopmentStatus - ) - ) - { - // likely the media label? - romObject.MediaLabel = token; - } - - // process dump flags - if (rawToken.IndexOf("[") > 0) - { - // has dump flags - string rawDumpFlags = rawToken.Substring(rawToken.IndexOf("[")); - string[] dumpFlags = rawDumpFlags.Split("["); - foreach (string dumpFlag in dumpFlags) + // check for media type + if (token.StartsWith("Disc") || + token.StartsWith("Disk") || + token.StartsWith("File") || + token.StartsWith("Part") || + token.StartsWith("Side") || + token.StartsWith("Tape")) { - string dToken = dumpFlag.Replace("]", ""); - if (dToken.Length > 0) + string[] tokens = token.Split(" "); + switch (tokens[0]) { - string[] dTokenCompare = dToken.Split(" "); - if (dTokenCompare[0].Trim().ToLower().StartsWith("a")) - { - romObject.flags.Add(dTokenCompare[0].Trim()); - } - else - { + case "Disc": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disc; + break; + case "Disk": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disk; + break; + case "File": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.File; + break; + case "Part": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Part; + break; + case "Side": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Side; + break; + case "Tape": + romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Tape; + break; + } + romObject.RomTypeMedia = token; + } - switch (dTokenCompare[0].Trim().ToLower()) + // check for media label + if (token.Length > 0 && + (token + ")") == gameNameTokens.Last() && + ( + token != romObject.RomTypeMedia && + token != gameObject.Publisher && + token != gameObject.SystemVariant && + token != gameObject.Video && + token != gameObject.Country && + token != gameObject.Copyright && + token != gameObject.Language && + token != romObject.DevelopmentStatus + ) + ) + { + // likely the media label? + romObject.MediaLabel = token; + } + + // process dump flags + if (rawToken.IndexOf("[") > 0) + { + // has dump flags + string rawDumpFlags = rawToken.Substring(rawToken.IndexOf("[")); + string[] dumpFlags = rawDumpFlags.Split("["); + foreach (string dumpFlag in dumpFlags) + { + string dToken = dumpFlag.Replace("]", ""); + if (dToken.Length > 0) + { + string[] dTokenCompare = dToken.Split(" "); + if (dTokenCompare[0].Trim().ToLower().StartsWith("a")) { - case "cr": - // cracked - case "f": - // fixed - case "h": - // hacked - case "m": - // modified - case "p": - // pirated - case "t": - // trained - case "tr": - // translated - case "o": - // overdump - case "u": - // underdump - case "v": - // virus - case "b": - // bad dump - case "a": - // alternate - case "!": - // known verified dump - // ------------------- - romObject.flags.Add(dToken); - break; + romObject.flags.Add(dTokenCompare[0].Trim()); } + else + { + + switch (dTokenCompare[0].Trim().ToLower()) + { + case "cr": + // cracked + case "f": + // fixed + case "h": + // hacked + case "m": + // modified + case "p": + // pirated + case "t": + // trained + case "tr": + // translated + case "o": + // overdump + case "u": + // underdump + case "v": + // virus + case "b": + // bad dump + case "a": + // alternate + case "!": + // known verified dump + // ------------------- + romObject.flags.Add(dToken); + break; + } + } + } - } } }