From e9d49e260a00d946f89b1deaab35a3ba4cd79d86 Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Fri, 10 Jun 2016 01:46:59 -0700 Subject: [PATCH] [DATabase] Clean up partial classes further --- DATabase/DATabase.cs | 271 -------------- DATabase/DATabase.csproj | 3 +- DATabase/Partials/DATabase_InitGenerate.cs | 60 ---- ...Tabase_InitUpdate.cs => DATabase_Inits.cs} | 331 +++++++++++++++++- 4 files changed, 329 insertions(+), 336 deletions(-) delete mode 100644 DATabase/Partials/DATabase_InitGenerate.cs rename DATabase/Partials/{DATabase_InitUpdate.cs => DATabase_Inits.cs} (54%) diff --git a/DATabase/DATabase.cs b/DATabase/DATabase.cs index 14690416..3b69ef94 100644 --- a/DATabase/DATabase.cs +++ b/DATabase/DATabase.cs @@ -571,277 +571,6 @@ namespace SabreTools return; } - #region Init Methods - - /// - /// Wrap importing and updating DATs - /// - /// - private static void InitImport(bool ignore) - { - IImport imp = new ImportTwo(_datroot, _connectionString, _logger, ignore); - imp.UpdateDatabase(); - } - - /// - /// Wrap trimming and merging a single DAT - /// - /// Input file or folder to be converted - /// Root directory to base path lengths on - /// True is games should not be renamed - /// True if forcepacking="unzip" should be included - private static void InitTrimMerge(string input, string root, bool rename, bool force) - { - // Strip any quotations from the name - input = input.Replace("\"", ""); - - if (input != "" && (File.Exists(input) || Directory.Exists(input))) - { - TrimMerge sg = new TrimMerge(input, root, rename, force, _logger); - sg.Process(); - return; - } - } - - /// - /// Wrap merging, diffing, and deduping 2 or mor DATs - /// - /// A List of Strings representing the DATs or DAT folders to be merged - /// Internal name of the DAT - /// Description and external name of the DAT - /// Category for the DAT - /// Version of the DAT - /// Author of the DAT - /// True if a DiffDat of all inputs is wanted, false otherwise - /// True if the outputted file should remove duplicates, false otherwise - /// True if the date should be omitted from the DAT, false otherwise - /// True if the forcepacking="unzip" tag is to be added, false otherwise - /// True if a old-style DAT should be output, false otherwise - /// True if DATs should be merged in SuperDAT style, false otherwise - /// True if the outputted diffs should be cascaded, false otherwise - /// True if cascaded diffs overwrite the source files, false otherwise - /// Output directory for the files (blank is default) - /// True to clean the game names to WoD standard, false otherwise (default) - private static void InitMergeDiff(List inputs, string name, string desc, string cat, string version, string author, - bool diff, bool dedup, bool bare, bool forceunpack, bool old, bool superdat, bool cascade, bool inplace, string outdir = "", bool clean = false) - { - // Make sure there are no folders in inputs - List newInputs = new List(); - foreach (string input in inputs) - { - if (Directory.Exists(input.Replace("\"", ""))) - { - foreach (string file in Directory.EnumerateFiles(input.Replace("\"", ""), "*", SearchOption.AllDirectories)) - { - try - { - newInputs.Add(Path.GetFullPath(file) + "¬" + Path.GetFullPath(input.Replace("\"", ""))); - } - catch (PathTooLongException) - { - _logger.Warning("The path for " + file + " was too long"); - } - catch (Exception ex) - { - _logger.Error(ex.ToString()); - } - } - } - else if (File.Exists(input.Replace("\"", ""))) - { - try - { - newInputs.Add(Path.GetFullPath(input.Replace("\"", "")) + "¬" + Path.GetDirectoryName(Path.GetFullPath(input.Replace("\"", "")))); - } - catch (PathTooLongException) - { - _logger.Warning("The path for " + input.Replace("\"", "") + " was too long"); - } - catch (Exception ex) - { - _logger.Error(ex.ToString()); - } - } - } - - MergeDiff md = new MergeDiff(newInputs, name, desc, cat, version, author, diff, dedup, bare, forceunpack, old, superdat, cascade, inplace, outdir, clean, _logger); - md.Process(); - } - - /// - /// Wrap splitting a DAT by 2 extensions - /// - /// Input file or folder to be split - /// First extension to split on - /// Second extension to split on - /// Output directory for the split files - private static void InitExtSplit(string input, string exta, string extb, string outdir) - { - // Strip any quotations from the names - input = input.Replace("\"", ""); - exta = exta.Replace("\"", ""); - extb = extb.Replace("\"", ""); - outdir = outdir.Replace("\"", ""); - - if (input != "" && File.Exists(input)) - { - if (exta == "" || extb == "") - { - _logger.Warning("Two extensions are needed to split a DAT!"); - return; - } - ExtSplit es = new ExtSplit(input, exta, extb, outdir, _logger); - es.Split(); - return; - } - else - { - _logger.Log("I'm sorry but " + input + "doesn't exist!"); - } - } - - /// - /// Wrap splitting a DAT by best available hashes - /// - /// List of inputs to be used - /// Output directory for the split files - private static void InitHashSplit(List inputs, string outdir) - { - // Strip any quotations from the names - outdir = outdir.Replace("\"", ""); - - // Verify the input files - foreach (string input in inputs) - { - if (!File.Exists(input.Replace("\"", "")) && !Directory.Exists(input.Replace("\"", ""))) - { - _logger.Error(input + " is not a valid file or folder!"); - Console.WriteLine(); - Build.Help(); - return; - } - } - - // If so, run the program - HashSplit hs = new HashSplit(inputs, outdir, _logger); - hs.Split(); - } - - /// - /// Wrap getting statistics on a DAT or folder of DATs - /// - /// List of inputs to be used - /// True to show individual DAT statistics, false otherwise - private static void InitStats(List inputs, bool single) - { - List newinputs = new List(); - - foreach (string input in inputs) - { - if (File.Exists(input.Replace("\"", ""))) - { - newinputs.Add(input.Replace("\"", "")); - } - if (Directory.Exists(input.Replace("\"", ""))) - { - foreach (string file in Directory.GetFiles(input.Replace("\"", ""), "*", SearchOption.AllDirectories)) - { - newinputs.Add(file.Replace("\"", "")); - } - } - } - - Logger statlog = new Logger(true, "stats.txt"); - statlog.Start(); - Stats stats = new Stats(newinputs, single, statlog); - stats.Process(); - statlog.Close(); - } - - /// - /// Wrap adding a new source to the database - /// - /// Source name - /// Source URL(s) - private static void InitAddSource(string name, string url) - { - if (DBTools.AddSource(name, url, _connectionString)) - { - _logger.Log("Source " + name + " added!"); - } - else - { - _logger.Error("Source " + name + " could not be added!"); - } - } - - /// - /// Wrap removing an existing source from the database - /// - /// Source ID to be removed from the database - private static void InitRemoveSource(string sourceid) - { - int srcid = -1; - if (Int32.TryParse(sourceid, out srcid)) - { - if (DBTools.RemoveSource(srcid, _connectionString)) - { - _logger.Log("Source '" + srcid + "' removed!"); - } - else - { - _logger.Error("Source with id '" + srcid + "' could not be removed."); - } - } - else - { - _logger.Error("Invalid input"); - } - } - - /// - /// Wrap adding a new system to the database - /// - /// Manufacturer name - /// System name - private static void InitAddSystem(string manufacturer, string system) - { - if (DBTools.AddSystem(manufacturer, system, _connectionString)) - { - _logger.Log("System " + manufacturer + " - " + system + " added!"); - } - else - { - _logger.Error("System " + manufacturer + " - " + system + " could not be added!"); - } - } - - /// - /// Wrap removing an existing system from the database - /// - /// System ID to be removed from the database - private static void InitRemoveSystem(string systemid) - { - int sysid = -1; - if (Int32.TryParse(systemid, out sysid)) - { - if (DBTools.RemoveSystem(sysid, _connectionString)) - { - _logger.Log("System '" + sysid + "' removed!"); - } - else - { - _logger.Error("System with id '" + sysid + "' could not be removed."); - } - } - else - { - _logger.Error("Invalid input"); - } - } - - #endregion - #region Helper methods /// diff --git a/DATabase/DATabase.csproj b/DATabase/DATabase.csproj index 9d17f414..7205a280 100644 --- a/DATabase/DATabase.csproj +++ b/DATabase/DATabase.csproj @@ -112,12 +112,11 @@ - + - diff --git a/DATabase/Partials/DATabase_InitGenerate.cs b/DATabase/Partials/DATabase_InitGenerate.cs deleted file mode 100644 index a262f578..00000000 --- a/DATabase/Partials/DATabase_InitGenerate.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System.Collections.Generic; -using Mono.Data.Sqlite; - -using SabreTools.Helper; - -namespace SabreTools -{ - public partial class DATabase - { - /// - /// Wrap generating a DAT from the library - /// - /// System ID to be used in the DAT (blank means all) - /// True if files should not be renamed with system and/or source in merged mode (default false) - /// True if the output file should be in ClrMamePro format (default false) - private static void InitGenerate(string systemid, bool norename, bool old) - { - IGenerate gen = new GenerateTwo(systemid, "" /* sourceid */, _datroot, _outroot, _connectionString, _logger, norename, old); - gen.Export(); - } - - /// - /// Wrap generating all standard DATs from the library - /// - private static void InitGenerateAll(bool norename, bool old) - { - List systems = new List(); - using (SqliteConnection dbc = new SqliteConnection(_connectionString)) - { - dbc.Open(); - - string query = "SELECT id FROM system"; - using (SqliteCommand slc = new SqliteCommand(query, dbc)) - { - using (SqliteDataReader sldr = slc.ExecuteReader()) - { - // If nothing is found, tell the user and exit - if (!sldr.HasRows) - { - _logger.Warning("No systems found! Please add a system and then try again."); - return; - } - - while (sldr.Read()) - { - systems.Add(sldr.GetInt32(0).ToString()); - } - } - } - - // Loop through the inputs - foreach (string system in systems) - { - _logger.User("Generating DAT for system id " + system); - InitGenerate(system, norename, old); - } - } - } - } -} diff --git a/DATabase/Partials/DATabase_InitUpdate.cs b/DATabase/Partials/DATabase_Inits.cs similarity index 54% rename from DATabase/Partials/DATabase_InitUpdate.cs rename to DATabase/Partials/DATabase_Inits.cs index a8e8f560..10d9ce1c 100644 --- a/DATabase/Partials/DATabase_InitUpdate.cs +++ b/DATabase/Partials/DATabase_Inits.cs @@ -1,10 +1,76 @@ -using System.IO; +using System; +using System.Collections.Generic; +using System.IO; +using Mono.Data.Sqlite; + using SabreTools.Helper; namespace SabreTools { public partial class DATabase { + #region Init Methods + + /// + /// Wrap importing and updating DATs + /// + /// + private static void InitImport(bool ignore) + { + IImport imp = new ImportTwo(_datroot, _connectionString, _logger, ignore); + imp.UpdateDatabase(); + } + + /// + /// Wrap generating a DAT from the library + /// + /// System ID to be used in the DAT (blank means all) + /// True if files should not be renamed with system and/or source in merged mode (default false) + /// True if the output file should be in ClrMamePro format (default false) + private static void InitGenerate(string systemid, bool norename, bool old) + { + IGenerate gen = new GenerateTwo(systemid, "" /* sourceid */, _datroot, _outroot, _connectionString, _logger, norename, old); + gen.Export(); + } + + /// + /// Wrap generating all standard DATs from the library + /// + private static void InitGenerateAll(bool norename, bool old) + { + List systems = new List(); + using (SqliteConnection dbc = new SqliteConnection(_connectionString)) + { + dbc.Open(); + + string query = "SELECT id FROM system"; + using (SqliteCommand slc = new SqliteCommand(query, dbc)) + { + using (SqliteDataReader sldr = slc.ExecuteReader()) + { + // If nothing is found, tell the user and exit + if (!sldr.HasRows) + { + _logger.Warning("No systems found! Please add a system and then try again."); + return; + } + + while (sldr.Read()) + { + systems.Add(sldr.GetInt32(0).ToString()); + } + } + } + + // Loop through the inputs + foreach (string system in systems) + { + _logger.User("Generating DAT for system id " + system); + InitGenerate(system, norename, old); + } + } + } + /// /// Wrap converting and updating DAT file from any format to any format /// @@ -41,7 +107,7 @@ namespace SabreTools /// Output files in TSV format /// Optional param for output directory /// True to clean the game names to WoD standard, false otherwise (default) - public static void InitUpdate(string input, + private static void InitUpdate(string input, string filename, string name, string description, @@ -198,7 +264,7 @@ namespace SabreTools /// User specified inputs contained in a DatData object /// Optional param for output directory /// True to clean the game names to WoD standard, false otherwise (default) - public static void InitUpdate(string inputFileName, DatData datdata, string outputDirectory, bool clean = false) + private static void InitUpdate(string inputFileName, DatData datdata, string outputDirectory, bool clean = false) { // Clean the input strings outputDirectory = outputDirectory.Replace("\"", ""); @@ -250,6 +316,265 @@ namespace SabreTools return; } + /// + /// Wrap trimming and merging a single DAT + /// + /// Input file or folder to be converted + /// Root directory to base path lengths on + /// True is games should not be renamed + /// True if forcepacking="unzip" should be included + private static void InitTrimMerge(string input, string root, bool rename, bool force) + { + // Strip any quotations from the name + input = input.Replace("\"", ""); + + if (input != "" && (File.Exists(input) || Directory.Exists(input))) + { + TrimMerge sg = new TrimMerge(input, root, rename, force, _logger); + sg.Process(); + return; + } + } + + /// + /// Wrap merging, diffing, and deduping 2 or mor DATs + /// + /// A List of Strings representing the DATs or DAT folders to be merged + /// Internal name of the DAT + /// Description and external name of the DAT + /// Category for the DAT + /// Version of the DAT + /// Author of the DAT + /// True if a DiffDat of all inputs is wanted, false otherwise + /// True if the outputted file should remove duplicates, false otherwise + /// True if the date should be omitted from the DAT, false otherwise + /// True if the forcepacking="unzip" tag is to be added, false otherwise + /// True if a old-style DAT should be output, false otherwise + /// True if DATs should be merged in SuperDAT style, false otherwise + /// True if the outputted diffs should be cascaded, false otherwise + /// True if cascaded diffs overwrite the source files, false otherwise + /// Output directory for the files (blank is default) + /// True to clean the game names to WoD standard, false otherwise (default) + private static void InitMergeDiff(List inputs, string name, string desc, string cat, string version, string author, + bool diff, bool dedup, bool bare, bool forceunpack, bool old, bool superdat, bool cascade, bool inplace, string outdir = "", bool clean = false) + { + // Make sure there are no folders in inputs + List newInputs = new List(); + foreach (string input in inputs) + { + if (Directory.Exists(input.Replace("\"", ""))) + { + foreach (string file in Directory.EnumerateFiles(input.Replace("\"", ""), "*", SearchOption.AllDirectories)) + { + try + { + newInputs.Add(Path.GetFullPath(file) + "¬" + Path.GetFullPath(input.Replace("\"", ""))); + } + catch (PathTooLongException) + { + _logger.Warning("The path for " + file + " was too long"); + } + catch (Exception ex) + { + _logger.Error(ex.ToString()); + } + } + } + else if (File.Exists(input.Replace("\"", ""))) + { + try + { + newInputs.Add(Path.GetFullPath(input.Replace("\"", "")) + "¬" + Path.GetDirectoryName(Path.GetFullPath(input.Replace("\"", "")))); + } + catch (PathTooLongException) + { + _logger.Warning("The path for " + input.Replace("\"", "") + " was too long"); + } + catch (Exception ex) + { + _logger.Error(ex.ToString()); + } + } + } + + MergeDiff md = new MergeDiff(newInputs, name, desc, cat, version, author, diff, dedup, bare, forceunpack, old, superdat, cascade, inplace, outdir, clean, _logger); + md.Process(); + } + + /// + /// Wrap splitting a DAT by 2 extensions + /// + /// Input file or folder to be split + /// First extension to split on + /// Second extension to split on + /// Output directory for the split files + private static void InitExtSplit(string input, string exta, string extb, string outdir) + { + // Strip any quotations from the names + input = input.Replace("\"", ""); + exta = exta.Replace("\"", ""); + extb = extb.Replace("\"", ""); + outdir = outdir.Replace("\"", ""); + + if (input != "" && File.Exists(input)) + { + if (exta == "" || extb == "") + { + _logger.Warning("Two extensions are needed to split a DAT!"); + return; + } + ExtSplit es = new ExtSplit(input, exta, extb, outdir, _logger); + es.Split(); + return; + } + else + { + _logger.Log("I'm sorry but " + input + "doesn't exist!"); + } + } + + /// + /// Wrap splitting a DAT by best available hashes + /// + /// List of inputs to be used + /// Output directory for the split files + private static void InitHashSplit(List inputs, string outdir) + { + // Strip any quotations from the names + outdir = outdir.Replace("\"", ""); + + // Verify the input files + foreach (string input in inputs) + { + if (!File.Exists(input.Replace("\"", "")) && !Directory.Exists(input.Replace("\"", ""))) + { + _logger.Error(input + " is not a valid file or folder!"); + Console.WriteLine(); + Build.Help(); + return; + } + } + + // If so, run the program + HashSplit hs = new HashSplit(inputs, outdir, _logger); + hs.Split(); + } + + /// + /// Wrap getting statistics on a DAT or folder of DATs + /// + /// List of inputs to be used + /// True to show individual DAT statistics, false otherwise + private static void InitStats(List inputs, bool single) + { + List newinputs = new List(); + + foreach (string input in inputs) + { + if (File.Exists(input.Replace("\"", ""))) + { + newinputs.Add(input.Replace("\"", "")); + } + if (Directory.Exists(input.Replace("\"", ""))) + { + foreach (string file in Directory.GetFiles(input.Replace("\"", ""), "*", SearchOption.AllDirectories)) + { + newinputs.Add(file.Replace("\"", "")); + } + } + } + + Logger statlog = new Logger(true, "stats.txt"); + statlog.Start(); + Stats stats = new Stats(newinputs, single, statlog); + stats.Process(); + statlog.Close(); + } + + /// + /// Wrap adding a new source to the database + /// + /// Source name + /// Source URL(s) + private static void InitAddSource(string name, string url) + { + if (DBTools.AddSource(name, url, _connectionString)) + { + _logger.Log("Source " + name + " added!"); + } + else + { + _logger.Error("Source " + name + " could not be added!"); + } + } + + /// + /// Wrap removing an existing source from the database + /// + /// Source ID to be removed from the database + private static void InitRemoveSource(string sourceid) + { + int srcid = -1; + if (Int32.TryParse(sourceid, out srcid)) + { + if (DBTools.RemoveSource(srcid, _connectionString)) + { + _logger.Log("Source '" + srcid + "' removed!"); + } + else + { + _logger.Error("Source with id '" + srcid + "' could not be removed."); + } + } + else + { + _logger.Error("Invalid input"); + } + } + + /// + /// Wrap adding a new system to the database + /// + /// Manufacturer name + /// System name + private static void InitAddSystem(string manufacturer, string system) + { + if (DBTools.AddSystem(manufacturer, system, _connectionString)) + { + _logger.Log("System " + manufacturer + " - " + system + " added!"); + } + else + { + _logger.Error("System " + manufacturer + " - " + system + " could not be added!"); + } + } + + /// + /// Wrap removing an existing system from the database + /// + /// System ID to be removed from the database + private static void InitRemoveSystem(string systemid) + { + int sysid = -1; + if (Int32.TryParse(systemid, out sysid)) + { + if (DBTools.RemoveSystem(sysid, _connectionString)) + { + _logger.Log("System '" + sysid + "' removed!"); + } + else + { + _logger.Error("System with id '" + sysid + "' could not be removed."); + } + } + else + { + _logger.Error("Invalid input"); + } + } + + #endregion + #region OBSOLETE ///