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
///