From 580fb8e42c556ea84d5008d3fd94c7f751e72112 Mon Sep 17 00:00:00 2001 From: Dmitriy Benyuk Date: Mon, 17 Mar 2025 13:32:04 +0200 Subject: [PATCH 1/3] Remove Default Language --- ...ration.Providers.DynamicwebProvider.csproj | 2 +- src/DynamicwebProvider.cs | 58 +++---------------- 2 files changed, 9 insertions(+), 51 deletions(-) diff --git a/src/Dynamicweb.DataIntegration.Providers.DynamicwebProvider.csproj b/src/Dynamicweb.DataIntegration.Providers.DynamicwebProvider.csproj index 5fdf9a3..68dd3a6 100644 --- a/src/Dynamicweb.DataIntegration.Providers.DynamicwebProvider.csproj +++ b/src/Dynamicweb.DataIntegration.Providers.DynamicwebProvider.csproj @@ -1,6 +1,6 @@  - 10.9.1 + 10.9.2 1.0.0.0 Dynamicweb Provider Dynamicweb Provider diff --git a/src/DynamicwebProvider.cs b/src/DynamicwebProvider.cs index 0b3914e..1f7a003 100644 --- a/src/DynamicwebProvider.cs +++ b/src/DynamicwebProvider.cs @@ -142,25 +142,7 @@ protected SqlConnection Connection { get { return connection ??= (SqlConnection)Database.CreateConnection(); } set { connection = value; } - } - - protected string defaultLanguage = null; - [AddInParameter("Default Language"), AddInParameterEditor(typeof(DropDownParameterEditor), "none=true;"), AddInParameterGroup("Destination"), AddInParameterOrder(10)] - public string DefaultLanguage - { - get - { - if (defaultLanguage == null) - { - defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); - } - return defaultLanguage; - } - set - { - defaultLanguage = value; - } - } + } [AddInParameter("Shop"), AddInParameterEditor(typeof(DropDownParameterEditor), "none=true;"), AddInParameterGroup("Destination"), AddInParameterOrder(20)] public string Shop { get; set; } @@ -225,8 +207,7 @@ public override void SaveAsXml(XmlTextWriter xmlTextWriter) xmlTextWriter.WriteElementString("DeleteIncomingItems", DeleteIncomingItems.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("SqlConnectionString", SqlConnectionString); xmlTextWriter.WriteElementString("Shop", Shop); - xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); - xmlTextWriter.WriteElementString("DefaultLanguage", DefaultLanguage); + xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("RepositoriesIndexUpdate", RepositoriesIndexUpdate); xmlTextWriter.WriteElementString("DiscardDuplicates", DiscardDuplicates.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("HideDeactivatedProducts", HideDeactivatedProducts.ToString(CultureInfo.CurrentCulture)); @@ -323,10 +304,7 @@ public DynamicwebProvider(XmlNode xmlNode) { DeleteProductsAndGroupForSpecificLanguage = node.FirstChild.Value == "True"; } - break; - case "DefaultLanguage": - DefaultLanguage = node.HasChildNodes ? node.FirstChild.Value : ""; - break; + break; case "RepositoriesIndexUpdate": if (node.HasChildNodes) { @@ -368,8 +346,7 @@ public override void UpdateSourceSettings(ISource source) DynamicwebProvider newProvider = (DynamicwebProvider)source; Shop = newProvider.Shop; UserKeyField = newProvider.UserKeyField; - DeactivateMissingProducts = newProvider.DeactivateMissingProducts; - DefaultLanguage = newProvider.DefaultLanguage; + DeactivateMissingProducts = newProvider.DeactivateMissingProducts; UpdateOnlyExistingRecords = newProvider.UpdateOnlyExistingRecords; InsertOnlyNewRecords = newProvider.InsertOnlyNewRecords; HideDeactivatedProducts = newProvider.HideDeactivatedProducts; @@ -470,6 +447,7 @@ public override bool RunJob(Job job) bool deactivateMissingProducts = false; try { + string defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); ReplaceMappingConditionalsWithValuesFromRequest(job); if (Connection.State != ConnectionState.Open) Connection.Open(); @@ -758,8 +736,7 @@ public override string Serialize() root.Add(CreateParameterNode(GetType(), "Remove missing rows after import in the destination tables only", RemoveMissingAfterImportDestinationTablesOnly.ToString())); root.Add(CreateParameterNode(GetType(), "Delete incoming rows", DeleteIncomingItems.ToString())); root.Add(CreateParameterNode(GetType(), "Shop", Shop)); - root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); - root.Add(CreateParameterNode(GetType(), "Default Language", DefaultLanguage)); + root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); root.Add(CreateParameterNode(GetType(), "Discard duplicates", DiscardDuplicates.ToString())); root.Add(CreateParameterNode(GetType(), "Hide deactivated products", HideDeactivatedProducts.ToString())); root.Add(CreateParameterNode(GetType(), "Persist successful rows and skip failing rows", SkipFailingRows.ToString())); @@ -851,22 +828,7 @@ public IEnumerable GetParameterOptions(string parameterName) { options.Add(new("Full", "Full")); options.Add(new("Partial", "Partial")); - } - else if (parameterName == "Default Language") - { - SqlCommand sqlLanguageCommand = new SqlCommand { Connection = Connection }; - if (Connection.State == ConnectionState.Closed) - Connection.Open(); - - SqlDataAdapter languagesDataAdapter = new SqlDataAdapter("select LanguageID, LanguageCode2, LanguageName from EcomLanguages", sqlLanguageCommand.Connection); - new SqlCommandBuilder(languagesDataAdapter); - DataSet languageDataSet = new DataSet(); - languagesDataAdapter.Fill(languageDataSet); - foreach (DataRow row in languageDataSet.Tables[0].Rows) - { - options.Add(new(row["LanguageName"].ToString(), row["LanguageID"])); - } - } + } else { var accessuserTable = GetSchema().GetTables().Find(t => t.Name == "AccessUser"); @@ -895,11 +857,7 @@ IEnumerable IParameterVisibility.GetHiddenParameterNames(string paramete { var result = new List(); switch (parameterName) - { - case "Default Language": - if (string.IsNullOrEmpty(defaultLanguage) || defaultLanguage.Equals(Ecommerce.Services.Languages.GetDefaultLanguageId(), StringComparison.OrdinalIgnoreCase)) - result.Add("Default Language"); - break; + { case "Shop": if (string.IsNullOrEmpty(Shop)) result.Add("Shop"); From bf3cb90d6b25e22fceb64f29cd7aa7e22030f2bc Mon Sep 17 00:00:00 2001 From: Dmitriy Benyuk Date: Fri, 21 Mar 2025 08:49:38 +0200 Subject: [PATCH 2/3] fix code --- src/DynamicwebProvider.cs | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/src/DynamicwebProvider.cs b/src/DynamicwebProvider.cs index 1f7a003..03c7784 100644 --- a/src/DynamicwebProvider.cs +++ b/src/DynamicwebProvider.cs @@ -142,7 +142,7 @@ protected SqlConnection Connection { get { return connection ??= (SqlConnection)Database.CreateConnection(); } set { connection = value; } - } + } [AddInParameter("Shop"), AddInParameterEditor(typeof(DropDownParameterEditor), "none=true;"), AddInParameterGroup("Destination"), AddInParameterOrder(20)] public string Shop { get; set; } @@ -207,7 +207,7 @@ public override void SaveAsXml(XmlTextWriter xmlTextWriter) xmlTextWriter.WriteElementString("DeleteIncomingItems", DeleteIncomingItems.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("SqlConnectionString", SqlConnectionString); xmlTextWriter.WriteElementString("Shop", Shop); - xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); + xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("RepositoriesIndexUpdate", RepositoriesIndexUpdate); xmlTextWriter.WriteElementString("DiscardDuplicates", DiscardDuplicates.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("HideDeactivatedProducts", HideDeactivatedProducts.ToString(CultureInfo.CurrentCulture)); @@ -304,7 +304,7 @@ public DynamicwebProvider(XmlNode xmlNode) { DeleteProductsAndGroupForSpecificLanguage = node.FirstChild.Value == "True"; } - break; + break; case "RepositoriesIndexUpdate": if (node.HasChildNodes) { @@ -346,7 +346,7 @@ public override void UpdateSourceSettings(ISource source) DynamicwebProvider newProvider = (DynamicwebProvider)source; Shop = newProvider.Shop; UserKeyField = newProvider.UserKeyField; - DeactivateMissingProducts = newProvider.DeactivateMissingProducts; + DeactivateMissingProducts = newProvider.DeactivateMissingProducts; UpdateOnlyExistingRecords = newProvider.UpdateOnlyExistingRecords; InsertOnlyNewRecords = newProvider.InsertOnlyNewRecords; HideDeactivatedProducts = newProvider.HideDeactivatedProducts; @@ -447,7 +447,6 @@ public override bool RunJob(Job job) bool deactivateMissingProducts = false; try { - string defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); ReplaceMappingConditionalsWithValuesFromRequest(job); if (Connection.State != ConnectionState.Open) Connection.Open(); @@ -470,18 +469,16 @@ public override bool RunJob(Job job) optionValue = mapping.GetOptionValue("DeactivateMissingProducts"); deactivateMissingProducts = optionValue.HasValue ? optionValue.Value : DeactivateMissingProducts; - if (!string.IsNullOrEmpty(defaultLanguage)) + string defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); + string destinationColumnNameForLanguageId = MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name); + if (!string.IsNullOrEmpty(defaultLanguage) && !string.IsNullOrEmpty(destinationColumnNameForLanguageId) && !columnMappings.Any(obj => obj.Active && obj.DestinationColumn.Name.Equals(destinationColumnNameForLanguageId, StringComparison.OrdinalIgnoreCase))) { - string destinationColumnNameForLanguageId = MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name); - if (!string.IsNullOrEmpty(destinationColumnNameForLanguageId) && !columnMappings.Any(obj => obj.Active && obj.DestinationColumn.Name.Equals(destinationColumnNameForLanguageId, StringComparison.OrdinalIgnoreCase))) + Column randomColumn = mapping.SourceTable.Columns.First(); + var languageColumnMapping = mapping.AddMapping(randomColumn, mapping.DestinationTable.Columns.Find(c => string.Compare(c.Name, MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name), true) == 0)); + languageColumnMapping.ScriptTypeProvider = new ConstantScriptType() { - Column randomColumn = mapping.SourceTable.Columns.First(); - var languageColumnMapping = mapping.AddMapping(randomColumn, mapping.DestinationTable.Columns.Find(c => string.Compare(c.Name, MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name), true) == 0)); - languageColumnMapping.ScriptTypeProvider = new ConstantScriptType() - { - ScriptValue = defaultLanguage - }; - } + ScriptValue = defaultLanguage + }; } if (!string.IsNullOrEmpty(Shop)) @@ -736,7 +733,7 @@ public override string Serialize() root.Add(CreateParameterNode(GetType(), "Remove missing rows after import in the destination tables only", RemoveMissingAfterImportDestinationTablesOnly.ToString())); root.Add(CreateParameterNode(GetType(), "Delete incoming rows", DeleteIncomingItems.ToString())); root.Add(CreateParameterNode(GetType(), "Shop", Shop)); - root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); + root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); root.Add(CreateParameterNode(GetType(), "Discard duplicates", DiscardDuplicates.ToString())); root.Add(CreateParameterNode(GetType(), "Hide deactivated products", HideDeactivatedProducts.ToString())); root.Add(CreateParameterNode(GetType(), "Persist successful rows and skip failing rows", SkipFailingRows.ToString())); @@ -828,7 +825,7 @@ public IEnumerable GetParameterOptions(string parameterName) { options.Add(new("Full", "Full")); options.Add(new("Partial", "Partial")); - } + } else { var accessuserTable = GetSchema().GetTables().Find(t => t.Name == "AccessUser"); @@ -857,7 +854,7 @@ IEnumerable IParameterVisibility.GetHiddenParameterNames(string paramete { var result = new List(); switch (parameterName) - { + { case "Shop": if (string.IsNullOrEmpty(Shop)) result.Add("Shop"); From d6f2fbcefa43b90ddd4332f37e9c152fe71078b1 Mon Sep 17 00:00:00 2001 From: Dmitriy Benyuk Date: Fri, 21 Mar 2025 08:55:08 +0200 Subject: [PATCH 3/3] rollback to fix build --- src/DynamicwebProvider.cs | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/DynamicwebProvider.cs b/src/DynamicwebProvider.cs index 03c7784..1f7a003 100644 --- a/src/DynamicwebProvider.cs +++ b/src/DynamicwebProvider.cs @@ -142,7 +142,7 @@ protected SqlConnection Connection { get { return connection ??= (SqlConnection)Database.CreateConnection(); } set { connection = value; } - } + } [AddInParameter("Shop"), AddInParameterEditor(typeof(DropDownParameterEditor), "none=true;"), AddInParameterGroup("Destination"), AddInParameterOrder(20)] public string Shop { get; set; } @@ -207,7 +207,7 @@ public override void SaveAsXml(XmlTextWriter xmlTextWriter) xmlTextWriter.WriteElementString("DeleteIncomingItems", DeleteIncomingItems.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("SqlConnectionString", SqlConnectionString); xmlTextWriter.WriteElementString("Shop", Shop); - xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); + xmlTextWriter.WriteElementString("DeleteProductsAndGroupForSpecificLanguage", DeleteProductsAndGroupForSpecificLanguage.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("RepositoriesIndexUpdate", RepositoriesIndexUpdate); xmlTextWriter.WriteElementString("DiscardDuplicates", DiscardDuplicates.ToString(CultureInfo.CurrentCulture)); xmlTextWriter.WriteElementString("HideDeactivatedProducts", HideDeactivatedProducts.ToString(CultureInfo.CurrentCulture)); @@ -304,7 +304,7 @@ public DynamicwebProvider(XmlNode xmlNode) { DeleteProductsAndGroupForSpecificLanguage = node.FirstChild.Value == "True"; } - break; + break; case "RepositoriesIndexUpdate": if (node.HasChildNodes) { @@ -346,7 +346,7 @@ public override void UpdateSourceSettings(ISource source) DynamicwebProvider newProvider = (DynamicwebProvider)source; Shop = newProvider.Shop; UserKeyField = newProvider.UserKeyField; - DeactivateMissingProducts = newProvider.DeactivateMissingProducts; + DeactivateMissingProducts = newProvider.DeactivateMissingProducts; UpdateOnlyExistingRecords = newProvider.UpdateOnlyExistingRecords; InsertOnlyNewRecords = newProvider.InsertOnlyNewRecords; HideDeactivatedProducts = newProvider.HideDeactivatedProducts; @@ -447,6 +447,7 @@ public override bool RunJob(Job job) bool deactivateMissingProducts = false; try { + string defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); ReplaceMappingConditionalsWithValuesFromRequest(job); if (Connection.State != ConnectionState.Open) Connection.Open(); @@ -469,16 +470,18 @@ public override bool RunJob(Job job) optionValue = mapping.GetOptionValue("DeactivateMissingProducts"); deactivateMissingProducts = optionValue.HasValue ? optionValue.Value : DeactivateMissingProducts; - string defaultLanguage = Ecommerce.Services.Languages.GetDefaultLanguageId(); - string destinationColumnNameForLanguageId = MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name); - if (!string.IsNullOrEmpty(defaultLanguage) && !string.IsNullOrEmpty(destinationColumnNameForLanguageId) && !columnMappings.Any(obj => obj.Active && obj.DestinationColumn.Name.Equals(destinationColumnNameForLanguageId, StringComparison.OrdinalIgnoreCase))) + if (!string.IsNullOrEmpty(defaultLanguage)) { - Column randomColumn = mapping.SourceTable.Columns.First(); - var languageColumnMapping = mapping.AddMapping(randomColumn, mapping.DestinationTable.Columns.Find(c => string.Compare(c.Name, MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name), true) == 0)); - languageColumnMapping.ScriptTypeProvider = new ConstantScriptType() + string destinationColumnNameForLanguageId = MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name); + if (!string.IsNullOrEmpty(destinationColumnNameForLanguageId) && !columnMappings.Any(obj => obj.Active && obj.DestinationColumn.Name.Equals(destinationColumnNameForLanguageId, StringComparison.OrdinalIgnoreCase))) { - ScriptValue = defaultLanguage - }; + Column randomColumn = mapping.SourceTable.Columns.First(); + var languageColumnMapping = mapping.AddMapping(randomColumn, mapping.DestinationTable.Columns.Find(c => string.Compare(c.Name, MappingExtensions.GetLanguageIdColumnName(mapping.DestinationTable.Name), true) == 0)); + languageColumnMapping.ScriptTypeProvider = new ConstantScriptType() + { + ScriptValue = defaultLanguage + }; + } } if (!string.IsNullOrEmpty(Shop)) @@ -733,7 +736,7 @@ public override string Serialize() root.Add(CreateParameterNode(GetType(), "Remove missing rows after import in the destination tables only", RemoveMissingAfterImportDestinationTablesOnly.ToString())); root.Add(CreateParameterNode(GetType(), "Delete incoming rows", DeleteIncomingItems.ToString())); root.Add(CreateParameterNode(GetType(), "Shop", Shop)); - root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); + root.Add(CreateParameterNode(GetType(), "Delete products/groups for languages included in input", DeleteProductsAndGroupForSpecificLanguage.ToString())); root.Add(CreateParameterNode(GetType(), "Discard duplicates", DiscardDuplicates.ToString())); root.Add(CreateParameterNode(GetType(), "Hide deactivated products", HideDeactivatedProducts.ToString())); root.Add(CreateParameterNode(GetType(), "Persist successful rows and skip failing rows", SkipFailingRows.ToString())); @@ -825,7 +828,7 @@ public IEnumerable GetParameterOptions(string parameterName) { options.Add(new("Full", "Full")); options.Add(new("Partial", "Partial")); - } + } else { var accessuserTable = GetSchema().GetTables().Find(t => t.Name == "AccessUser"); @@ -854,7 +857,7 @@ IEnumerable IParameterVisibility.GetHiddenParameterNames(string paramete { var result = new List(); switch (parameterName) - { + { case "Shop": if (string.IsNullOrEmpty(Shop)) result.Add("Shop");