refactor: better casting of int types from database

This commit is contained in:
Michael Green
2023-03-03 16:27:42 +11:00
parent 39e0bd9740
commit 959f6f2419
2 changed files with 132 additions and 121 deletions

View File

@@ -175,11 +175,11 @@ if (Directory.Exists(tosecXML))
sql = "INSERT INTO signatures_platforms (platform) VALUES (@platform); SELECT LAST_INSERT_ID()"; sql = "INSERT INTO signatures_platforms (platform) VALUES (@platform); SELECT LAST_INSERT_ID()";
sigDB = db.ExecuteCMD(sql, dbDict); sigDB = db.ExecuteCMD(sql, dbDict);
gameSystem = int.Parse(sigDB.Rows[0][0].ToString()); gameSystem = (int)sigDB.Rows[0][0];
} }
else else
{ {
gameSystem = int.Parse(sigDB.Rows[0][0].ToString()); gameSystem = (int)sigDB.Rows[0][0];
} }
} }
dbDict.Add("systemid", gameSystem); dbDict.Add("systemid", gameSystem);
@@ -196,11 +196,11 @@ if (Directory.Exists(tosecXML))
// entry not present, insert it // entry not present, insert it
sql = "INSERT INTO signatures_publishers (publisher) VALUES (@publisher); SELECT LAST_INSERT_ID()"; sql = "INSERT INTO signatures_publishers (publisher) VALUES (@publisher); SELECT LAST_INSERT_ID()";
sigDB = db.ExecuteCMD(sql, dbDict); sigDB = db.ExecuteCMD(sql, dbDict);
gamePublisher = int.Parse(sigDB.Rows[0][0].ToString()); gamePublisher = (int)sigDB.Rows[0][0];
} }
else else
{ {
gamePublisher = int.Parse(sigDB.Rows[0][0].ToString()); gamePublisher = (int)sigDB.Rows[0][0];
} }
} }
dbDict.Add("publisherid", gamePublisher); 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()"; "(@name, @description, @year, @publisherid, @demo, @systemid, @systemvariant, @video, @country, @language, @copyright); SELECT LAST_INSERT_ID()";
sigDB = db.ExecuteCMD(sql, dbDict); sigDB = db.ExecuteCMD(sql, dbDict);
gameId = int.Parse(sigDB.Rows[0][0].ToString()); gameId = (int)sigDB.Rows[0][0];
} }
else else
{ {
gameId = int.Parse(sigDB.Rows[0][0].ToString()); gameId = (int)sigDB.Rows[0][0];
} }
// store rom // store rom
@@ -268,11 +268,11 @@ if (Directory.Exists(tosecXML))
sigDB = db.ExecuteCMD(sql, dbDict); sigDB = db.ExecuteCMD(sql, dbDict);
romId = int.Parse(sigDB.Rows[0][0].ToString()); romId = (int)sigDB.Rows[0][0];
} }
else else
{ {
romId = int.Parse(sigDB.Rows[0][0].ToString()); romId = (int)sigDB.Rows[0][0];
} }
} }
} }

View File

@@ -351,131 +351,142 @@ namespace gaseous_signature_parser.parsers
case "rom": case "rom":
RomSignatureObject.Game.Rom romObject = new RomSignatureObject.Game.Rom(); RomSignatureObject.Game.Rom romObject = new RomSignatureObject.Game.Rom();
romObject.Name = xmlGameDetail.Attributes["name"]?.Value; if (xmlGameDetail != null)
romObject.Size = UInt64.Parse(xmlGameDetail.Attributes["size"]?.Value); {
romObject.Crc = xmlGameDetail.Attributes["crc"]?.Value; romObject.Name = xmlGameDetail.Attributes["name"]?.Value;
romObject.Md5 = xmlGameDetail.Attributes["md5"]?.Value; if (xmlGameDetail.Attributes["size"]?.Value != null)
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))
{ {
romObject.DevelopmentStatus = token; romObject.Size = UInt64.Parse(xmlGameDetail.Attributes["size"]?.Value);
} }
else
// check for media type
if (token.StartsWith("Disc") ||
token.StartsWith("Disk") ||
token.StartsWith("File") ||
token.StartsWith("Part") ||
token.StartsWith("Side") ||
token.StartsWith("Tape"))
{ {
string[] tokens = token.Split(" "); romObject.Size = 0;
switch (tokens[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.DevelopmentStatus = token;
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;
}
// check for media label // check for media type
if (token.Length > 0 && if (token.StartsWith("Disc") ||
(token + ")") == gameNameTokens.Last() && token.StartsWith("Disk") ||
( token.StartsWith("File") ||
token != romObject.RomTypeMedia && token.StartsWith("Part") ||
token != gameObject.Publisher && token.StartsWith("Side") ||
token != gameObject.SystemVariant && token.StartsWith("Tape"))
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("]", ""); string[] tokens = token.Split(" ");
if (dToken.Length > 0) switch (tokens[0])
{ {
string[] dTokenCompare = dToken.Split(" "); case "Disc":
if (dTokenCompare[0].Trim().ToLower().StartsWith("a")) romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disc;
{ break;
romObject.flags.Add(dTokenCompare[0].Trim()); case "Disk":
} romObject.RomType = RomSignatureObject.Game.Rom.RomTypes.Disk;
else 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": romObject.flags.Add(dTokenCompare[0].Trim());
// 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;
} }
} 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;
}
}
}
} }
} }
} }