diff --git a/DATabase/Generate.cs b/DATabase/Generate.cs index 86715472..e6322131 100644 --- a/DATabase/Generate.cs +++ b/DATabase/Generate.cs @@ -236,12 +236,20 @@ JOIN files ON games.id=files.setid JOIN checksums ON files.id=checksums.file" + - (!sysmerged || !srcmerged ? "\nWHERE" : "") + + (!sysmerged || !srcmerged ? "\nWHERE" : "") + (!srcmerged ? " sources.id=" + _source : "") + (!srcmerged && !sysmerged ? " AND" : "") + - (!sysmerged ? " systems.id=" + _system : "") + -(merged ? "\nGROUP BY checksums.size, checksums.crc, checksums.md5, checksums.sha1" : "") + + (!sysmerged ? " systems.id=" + _system : "") + "\n" + + (sysmerged && srcmerged ? "\nWHERE" : " AND") + +" files.id IN ( SELECT file from checksums WHERE file IN (" + +" SELECT file FROM checksums WHERE file IN (" + +" SELECT file FROM checksums" + + (merged ? "\nGROUP BY size, sha1" : "") + " )" + + (merged ? "\nGROUP BY size, md5" : "") + " )" + + (merged ? "\nGROUP BY size, crc" : "") + " )" + + (merged ? "\nGROUP BY checksums.size, checksums.md5, checksums.sha1" : "") + "\nORDER BY systems.id, sources.id, games.name, files.name"; + using (SQLiteConnection dbc = new SQLiteConnection(_connectionString)) { dbc.Open(); diff --git a/DATabase/Importer.cs b/DATabase/Importer.cs index c192fe35..231d9dc0 100644 --- a/DATabase/Importer.cs +++ b/DATabase/Importer.cs @@ -266,12 +266,10 @@ namespace DATabase // Experimental looping using only XML parsing XmlNode node = doc.FirstChild; - Console.WriteLine(node.Name); if (node != null && node.Name == "xml") { node = node.NextSibling; } - Console.WriteLine(node.Name); if (node != null && (node.Name == "datafile" || node.Name == "softwarelist")) { if (node.NextSibling != null && node.NextSibling.Name == node.Name) @@ -280,7 +278,6 @@ namespace DATabase } node = node.FirstChild; } - Console.WriteLine(node.Name); if (node != null && node.Name == "header") { if (node.SelectSingleNode("name").InnerText.Contains(" - SuperDAT")) @@ -327,9 +324,9 @@ namespace DATabase child.Attributes["name"].Value, date, (child.Attributes["size"] != null ? Int32.Parse(child.Attributes["size"].Value) : -1), - (child.Attributes["crc"] != null ? child.Attributes["crc"].Value : ""), - (child.Attributes["md5"] != null ? child.Attributes["md5"].Value : ""), - (child.Attributes["sha1"] != null ? child.Attributes["sha1"].Value : "") + (child.Attributes["crc"] != null ? child.Attributes["crc"].Value.ToLowerInvariant() : ""), + (child.Attributes["md5"] != null ? child.Attributes["md5"].Value.ToLowerInvariant() : ""), + (child.Attributes["sha1"] != null ? child.Attributes["sha1"].Value.ToLowerInvariant() : "") ); } // If we find the signs of a software list, traverse the children