diff --git a/Gremlin/GremlinData/DBClasses/DbHelper.cs b/Gremlin/GremlinData/DBClasses/DbHelper.cs index 9e1de85..1dce511 100644 --- a/Gremlin/GremlinData/DBClasses/DbHelper.cs +++ b/Gremlin/GremlinData/DBClasses/DbHelper.cs @@ -20,7 +20,8 @@ namespace Gremlin.GremlinData.DBClasses internal static class DbHelper { private static readonly DateTime FarInTheFuture = DateTime.Parse("2050-12-31t00:00:00.000000z", CultureInfo.CurrentCulture); - private static readonly ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = Environment.ProcessorCount * 2 }; + private static readonly ParallelOptions parallelOptions = new() { MaxDegreeOfParallelism = Environment.ProcessorCount * 4 }; + private static readonly Random random = new(); public static bool CheckDatabaseConnection(string connectionString) { @@ -1814,6 +1815,7 @@ namespace Gremlin.GremlinData.DBClasses { return await Task.Run(() => ImportCustomDescriptionsFromCsv()); } + public static async Task UpdateProductsFromCsvAsync() { return await Task.Run(() => UpdateProductsFromCsv()); @@ -1867,7 +1869,6 @@ namespace Gremlin.GremlinData.DBClasses catch { return null; } } - private static readonly Random random = new(); public static string RandomString(int length) { const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; diff --git a/Gremlin/GremlinData/DBClasses/ProductEqualityComparer.cs b/Gremlin/GremlinData/DBClasses/ProductEqualityComparer.cs new file mode 100644 index 0000000..d4ed993 --- /dev/null +++ b/Gremlin/GremlinData/DBClasses/ProductEqualityComparer.cs @@ -0,0 +1,26 @@ +using System.Collections.Generic; +using System.Text; +using Gremlin.GremlinData.EntityClasses; + +namespace Gremlin.GremlinData.DBClasses +{ + public class ProductEqualityComparer : IEqualityComparer + { + public bool Equals(Product product1, Product product2) + { + return !((product1 != null || product2 != null) + && !(product1 != null && product2 != null + && product1.ProductNumber == product2.ProductNumber + && product1.OptionNumber == product2.OptionNumber + && product1.BreakRangeFrom == product2.BreakRangeFrom + && product1.BreakRangeTo == product2.BreakRangeTo)); + } + + public int GetHashCode(Product product) + { + StringBuilder sb = new(); + _ = sb.Append(product.ProductNumber).Append(product.OptionNumber).Append(product.BreakRangeFrom).Append(product.BreakRangeTo); + return sb.ToString().GetHashCode(); + } + } +} diff --git a/Gremlin/GremlinUtilities/FileIO.cs b/Gremlin/GremlinUtilities/FileIO.cs index bcab2c3..a85753a 100644 --- a/Gremlin/GremlinUtilities/FileIO.cs +++ b/Gremlin/GremlinUtilities/FileIO.cs @@ -12,7 +12,6 @@ namespace Gremlin.GremlinUtilities internal static class FileIO { public static string ReadResource(string name) - //Source and credit to: https://stackoverflow.com/questions/3314140/how-to-read-embedded-resource-text-file { Assembly assembly = Assembly.GetExecutingAssembly();