From 1dcbd0d4e5c936821cdd4e840796f6036cdcfcfa Mon Sep 17 00:00:00 2001 From: Christian Wade Date: Fri, 19 Nov 2021 21:44:00 -0800 Subject: [PATCH] Option "For table updates, retain refresh policy" --- .../BismNormalizer/Settings.Designer.cs | 12 ++ .../BismNormalizer/Settings.settings | 3 + .../TabularCompare/OptionsInfo.cs | 12 ++ .../TabularMetadata/Comparison.cs | 28 +++- .../TabularMetadata/TabularModel.cs | 40 +++-- .../TabularCompare/UI/Options.Designer.cs | 138 +++++++++++------- .../TabularCompare/UI/Options.cs | 2 + BismNormalizer/BismNormalizer/app.config | 3 + 8 files changed, 172 insertions(+), 66 deletions(-) diff --git a/BismNormalizer/BismNormalizer/Settings.Designer.cs b/BismNormalizer/BismNormalizer/Settings.Designer.cs index 6cbd1ec..0a7a146 100644 --- a/BismNormalizer/BismNormalizer/Settings.Designer.cs +++ b/BismNormalizer/BismNormalizer/Settings.Designer.cs @@ -370,5 +370,17 @@ namespace BismNormalizer { this["OptionRetainRoleMembers"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool OptionRetainRefreshPolicy { + get { + return ((bool)(this["OptionRetainRefreshPolicy"])); + } + set { + this["OptionRetainRefreshPolicy"] = value; + } + } } } diff --git a/BismNormalizer/BismNormalizer/Settings.settings b/BismNormalizer/BismNormalizer/Settings.settings index 0a7a010..5b96a72 100644 --- a/BismNormalizer/BismNormalizer/Settings.settings +++ b/BismNormalizer/BismNormalizer/Settings.settings @@ -89,5 +89,8 @@ False + + False + \ No newline at end of file diff --git a/BismNormalizer/BismNormalizer/TabularCompare/OptionsInfo.cs b/BismNormalizer/BismNormalizer/TabularCompare/OptionsInfo.cs index 3b61b65..ff14e89 100644 --- a/BismNormalizer/BismNormalizer/TabularCompare/OptionsInfo.cs +++ b/BismNormalizer/BismNormalizer/TabularCompare/OptionsInfo.cs @@ -23,6 +23,7 @@ namespace BismNormalizer.TabularCompare private bool _optionLineageTag; private bool _optionRetainPartitions; private bool _optionRetainPolicyPartitions; + private bool _optionRetainRefreshPolicy; private bool _optionRetainStorageMode; private bool _optionMeasureDependencies; private ProcessingOption _optionProcessingOption; @@ -45,6 +46,7 @@ namespace BismNormalizer.TabularCompare _optionLineageTag = Settings.Default.OptionLineageTag; _optionRetainPartitions = Settings.Default.OptionRetainPartitions; _optionRetainPolicyPartitions = Settings.Default.OptionRetainPolicyPartitions; + _optionRetainRefreshPolicy = Settings.Default.OptionRetainRefreshPolicy; _optionRetainStorageMode = Settings.Default.OptionRetainStorageMode; _optionMeasureDependencies = Settings.Default.OptionMeasureDependencies; _optionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), Settings.Default.OptionProcessingOption); @@ -149,6 +151,15 @@ namespace BismNormalizer.TabularCompare set { _optionRetainPolicyPartitions = value; } } + /// + /// A Boolean specifying whether to retain incremental refresh policy. + /// + public bool OptionRetainRefreshPolicy + { + get { return _optionRetainRefreshPolicy; } + set { _optionRetainRefreshPolicy = value; } + } + /// /// A Boolean specifying whether to retain storage for table updates on composite models. /// @@ -212,6 +223,7 @@ namespace BismNormalizer.TabularCompare Settings.Default.OptionLineageTag = _optionLineageTag; Settings.Default.OptionRetainPartitions = _optionRetainPartitions; Settings.Default.OptionRetainPolicyPartitions = _optionRetainPolicyPartitions; + Settings.Default.OptionRetainRefreshPolicy = _optionRetainRefreshPolicy; Settings.Default.OptionRetainStorageMode = _optionRetainStorageMode; Settings.Default.OptionMeasureDependencies = _optionMeasureDependencies; Settings.Default.OptionProcessingOption = _optionProcessingOption.ToString(); diff --git a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs index 7eab542..a978099 100644 --- a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs +++ b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/Comparison.cs @@ -1052,7 +1052,9 @@ namespace BismNormalizer.TabularCompare.TabularMetadata _targetTabularModel.CanRetainPartitions( //But also check if doing retain partitions on this table (if so, dependency will remain). _sourceTabularModel.Tables.FindByName(comparisonObjectToCheck.TargetObjectName), _targetTabularModel.Tables.FindByName(comparisonObjectToCheck.TargetObjectName), - out string retainPartitionsMessage) + out string retainPartitionsMessage, + out PartitionSourceType partitionSourceTypeSource, + out PartitionSourceType partitionSourceTypeTarget) ) ) //Create table is not possible to have a dependency on this object about to be deleted. Delete table is fine. ) @@ -1627,9 +1629,15 @@ namespace BismNormalizer.TabularCompare.TabularMetadata List warningObjectList = new List(); bool fromDependencies = false; bool nonStructuredDataSourceLocal = false; + bool canRetainPartitions = + _targetTabularModel.CanRetainPartitions( + tableSource, tableTarget, + out string retainPartitionsMessageTemp, + out PartitionSourceType partitionSourceTypeSource, + out PartitionSourceType partitionSourceTypeTarget); //Will this table retain partitions? If yes, don't need to bother with source dependency (target dependency checking will cover for deletes). - if (!_targetTabularModel.CanRetainPartitions(tableSource, tableTarget, out string retainPartitionsMessageTemp)) + if (!canRetainPartitions) { //Check any objects in source that this table depends on are also going to be created/updated if not already in target foreach (Partition partition in tableSource.TomTable.Partitions) @@ -1661,8 +1669,20 @@ namespace BismNormalizer.TabularCompare.TabularMetadata { return; }; - _targetTabularModel.UpdateTable(tableSource, tableTarget, out string retainPartitionsMessage); - OnValidationMessage(new ValidationMessageEventArgs($"Update {(tableSource.IsCalculationGroup ? "calculation group" : "table")} '{comparisonObject.TargetObjectName}'. {retainPartitionsMessage}", ValidationMessageType.Table, ValidationMessageStatus.Informational)); + + //Check if, based on options selected, check if target table would contain policy based partitions with no refresh policy + if ( + (canRetainPartitions && !_comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy && partitionSourceTypeTarget == PartitionSourceType.PolicyRange && tableSource.TomTable.RefreshPolicy == null) || + (!canRetainPartitions && _comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy && partitionSourceTypeSource == PartitionSourceType.PolicyRange && tableTarget.TomTable.RefreshPolicy == null) + ) + { + OnValidationMessage(new ValidationMessageEventArgs($"Unable to update table {comparisonObject.TargetObjectName} because, based on options selected, the resulting table would contain policy based partitions with no refresh policy, which is not allowed.", (tableSource.IsCalculationGroup ? ValidationMessageType.CalculationGroup : ValidationMessageType.Table), ValidationMessageStatus.Warning)); + } + else + { + _targetTabularModel.UpdateTable(tableSource, tableTarget, out string retainPartitionsMessage); + OnValidationMessage(new ValidationMessageEventArgs($"Update {(tableSource.IsCalculationGroup ? "calculation group" : "table")} '{comparisonObject.TargetObjectName}'. {retainPartitionsMessage}", ValidationMessageType.Table, ValidationMessageStatus.Informational)); + } } } else diff --git a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularModel.cs b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularModel.cs index 21f114d..f7d941c 100644 --- a/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularModel.cs +++ b/BismNormalizer/BismNormalizer/TabularCompare/TabularMetadata/TabularModel.cs @@ -639,7 +639,12 @@ namespace BismNormalizer.TabularCompare.TabularMetadata /// Table object in the target tabular model to be updated. public void UpdateTable(Table tableSource, Table tableTarget, out string retainPartitionsMessage) { - bool canRetainPartitions = CanRetainPartitions(tableSource, tableTarget, out retainPartitionsMessage); + bool canRetainPartitions = CanRetainPartitions( + tableSource, + tableTarget, + out retainPartitionsMessage, + out PartitionSourceType partitionSourceTypeSource, + out PartitionSourceType partitionSourceTypeTarget); Tom.Table tomTableTargetOrig = tableTarget.TomTable.Clone(); ModeType tableTargetModeType = tableTarget.TableModeType; List tomRelationshipsToAddBack = DeleteTable(tableTarget.Name); @@ -690,48 +695,61 @@ namespace BismNormalizer.TabularCompare.TabularMetadata { tableTarget.ResetStorageMode(tableTargetModeType); } + + //add back refresh policy if option selected + if (_comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy) + { + if (tomTableTargetOrig.RefreshPolicy == null) + { + tableTarget.TomTable.RefreshPolicy = null; + } + else + { + tableTarget.TomTable.RefreshPolicy = tomTableTargetOrig.RefreshPolicy.Clone(); + } + } } } - public bool CanRetainPartitions(Table tableSource, Table tableTarget, out string retainPartitionsMessage) + public bool CanRetainPartitions(Table tableSource, Table tableTarget, out string retainPartitionsMessage, out PartitionSourceType partitionSourceTypeSource, out PartitionSourceType partitionSourceTypeTarget) { //Initialize variables retainPartitionsMessage = ""; - PartitionSourceType sourceTypeSource = PartitionSourceType.None; + partitionSourceTypeSource = PartitionSourceType.None; foreach (Partition partition in tableSource.TomTable.Partitions) { - sourceTypeSource = partition.SourceType; + partitionSourceTypeSource = partition.SourceType; break; } - PartitionSourceType sourceTypeTarget = PartitionSourceType.None; + partitionSourceTypeTarget = PartitionSourceType.None; foreach (Partition partitionTarget in tableTarget.TomTable.Partitions) { - sourceTypeTarget = partitionTarget.SourceType; + partitionSourceTypeTarget = partitionTarget.SourceType; break; } //Verify necessary options are checked if (!_comparisonInfo.OptionsInfo.OptionRetainPartitions) return false; - if (_comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions && sourceTypeTarget != PartitionSourceType.PolicyRange) + if (_comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions && partitionSourceTypeTarget != PartitionSourceType.PolicyRange) return false; //both tables need to have M or query partitions, or target can be policy partitions. Also type needs to match (won't copy query partition to M table). If a table has no partitions, do nothing. - if (!(sourceTypeSource == PartitionSourceType.M || sourceTypeSource == PartitionSourceType.Query || sourceTypeSource == PartitionSourceType.PolicyRange)) + if (!(partitionSourceTypeSource == PartitionSourceType.M || partitionSourceTypeSource == PartitionSourceType.Query || partitionSourceTypeSource == PartitionSourceType.PolicyRange)) { retainPartitionsMessage = $"Retain partitions not applicable to partition types."; return false; } - if (!(sourceTypeTarget == PartitionSourceType.M || sourceTypeTarget == PartitionSourceType.Query || sourceTypeTarget == PartitionSourceType.PolicyRange)) + if (!(partitionSourceTypeTarget == PartitionSourceType.M || partitionSourceTypeTarget == PartitionSourceType.Query || partitionSourceTypeTarget == PartitionSourceType.PolicyRange)) { retainPartitionsMessage = $"Retain partitions not applicable to partition types."; return false; } - if ((sourceTypeTarget != sourceTypeSource) && sourceTypeTarget != PartitionSourceType.PolicyRange) + if (partitionSourceTypeTarget != partitionSourceTypeSource && !(partitionSourceTypeTarget == PartitionSourceType.M && partitionSourceTypeSource == PartitionSourceType.PolicyRange) && partitionSourceTypeTarget != PartitionSourceType.PolicyRange) { - retainPartitionsMessage = $"Retain partitions not applied because source partition type is {sourceTypeSource.ToString()} and target partition type is {sourceTypeTarget.ToString()}."; + retainPartitionsMessage = $"Retain partitions not applied because source partition type is {partitionSourceTypeSource.ToString()} and target partition type is {partitionSourceTypeTarget.ToString()}."; return false; } diff --git a/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.Designer.cs b/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.Designer.cs index 101b5b9..65604bf 100644 --- a/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.Designer.cs +++ b/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.Designer.cs @@ -35,6 +35,8 @@ this.chkMeasureDependencies = new System.Windows.Forms.CheckBox(); this.chkPerspectives = new System.Windows.Forms.CheckBox(); this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.chkRetainRefreshPolicy = new System.Windows.Forms.CheckBox(); + this.chkRetainRoleMembers = new System.Windows.Forms.CheckBox(); this.chkLineageTag = new System.Windows.Forms.CheckBox(); this.chkRetainStorageMode = new System.Windows.Forms.CheckBox(); this.chkRetainPolicyPartitions = new System.Windows.Forms.CheckBox(); @@ -46,7 +48,6 @@ this.chkAffectedTables = new System.Windows.Forms.CheckBox(); this.cboProcessingOption = new System.Windows.Forms.ComboBox(); this.label1 = new System.Windows.Forms.Label(); - this.chkRetainRoleMembers = new System.Windows.Forms.CheckBox(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.SuspendLayout(); @@ -55,9 +56,10 @@ // this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.btnCancel.Location = new System.Drawing.Point(274, 489); + this.btnCancel.Location = new System.Drawing.Point(548, 991); + this.btnCancel.Margin = new System.Windows.Forms.Padding(6); this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.Size = new System.Drawing.Size(150, 44); this.btnCancel.TabIndex = 21; this.btnCancel.Text = "Cancel"; this.btnCancel.UseVisualStyleBackColor = true; @@ -66,9 +68,10 @@ // this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnOK.DialogResult = System.Windows.Forms.DialogResult.OK; - this.btnOK.Location = new System.Drawing.Point(194, 489); + this.btnOK.Location = new System.Drawing.Point(388, 991); + this.btnOK.Margin = new System.Windows.Forms.Padding(6); this.btnOK.Name = "btnOK"; - this.btnOK.Size = new System.Drawing.Size(75, 23); + this.btnOK.Size = new System.Drawing.Size(150, 44); this.btnOK.TabIndex = 20; this.btnOK.Text = "OK"; this.btnOK.UseVisualStyleBackColor = true; @@ -79,9 +82,10 @@ this.chkRoles.AutoSize = true; this.chkRoles.Checked = true; this.chkRoles.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkRoles.Location = new System.Drawing.Point(14, 121); + this.chkRoles.Location = new System.Drawing.Point(28, 233); + this.chkRoles.Margin = new System.Windows.Forms.Padding(6); this.chkRoles.Name = "chkRoles"; - this.chkRoles.Size = new System.Drawing.Size(86, 17); + this.chkRoles.Size = new System.Drawing.Size(166, 29); this.chkRoles.TabIndex = 5; this.chkRoles.Text = "Include roles"; this.chkRoles.UseVisualStyleBackColor = true; @@ -90,9 +94,10 @@ // chkPartitions // this.chkPartitions.AutoSize = true; - this.chkPartitions.Location = new System.Drawing.Point(14, 172); + this.chkPartitions.Location = new System.Drawing.Point(28, 331); + this.chkPartitions.Margin = new System.Windows.Forms.Padding(6); this.chkPartitions.Name = "chkPartitions"; - this.chkPartitions.Size = new System.Drawing.Size(224, 17); + this.chkPartitions.Size = new System.Drawing.Size(451, 29); this.chkPartitions.TabIndex = 6; this.chkPartitions.Text = "Consider partitions when comparing tables"; this.chkPartitions.UseVisualStyleBackColor = true; @@ -104,9 +109,10 @@ this.chkMeasureDependencies.AutoSize = true; this.chkMeasureDependencies.Checked = true; this.chkMeasureDependencies.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkMeasureDependencies.Location = new System.Drawing.Point(14, 311); + this.chkMeasureDependencies.Location = new System.Drawing.Point(28, 655); + this.chkMeasureDependencies.Margin = new System.Windows.Forms.Padding(6); this.chkMeasureDependencies.Name = "chkMeasureDependencies"; - this.chkMeasureDependencies.Size = new System.Drawing.Size(47, 17); + this.chkMeasureDependencies.Size = new System.Drawing.Size(86, 29); this.chkMeasureDependencies.TabIndex = 7; this.chkMeasureDependencies.Text = "XXX"; this.chkMeasureDependencies.UseVisualStyleBackColor = true; @@ -114,9 +120,10 @@ // chkPerspectives // this.chkPerspectives.AutoSize = true; - this.chkPerspectives.Location = new System.Drawing.Point(14, 24); + this.chkPerspectives.Location = new System.Drawing.Point(28, 46); + this.chkPerspectives.Margin = new System.Windows.Forms.Padding(6); this.chkPerspectives.Name = "chkPerspectives"; - this.chkPerspectives.Size = new System.Drawing.Size(124, 17); + this.chkPerspectives.Size = new System.Drawing.Size(241, 29); this.chkPerspectives.TabIndex = 3; this.chkPerspectives.Text = "Include perspectives"; this.chkPerspectives.UseVisualStyleBackColor = true; @@ -127,6 +134,7 @@ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.chkRetainRefreshPolicy); this.groupBox1.Controls.Add(this.chkRetainRoleMembers); this.groupBox1.Controls.Add(this.chkLineageTag); this.groupBox1.Controls.Add(this.chkRetainStorageMode); @@ -139,19 +147,46 @@ this.groupBox1.Controls.Add(this.chkMeasureDependencies); this.groupBox1.Controls.Add(this.chkPartitions); this.groupBox1.Controls.Add(this.chkRoles); - this.groupBox1.Location = new System.Drawing.Point(12, 11); + this.groupBox1.Location = new System.Drawing.Point(24, 21); + this.groupBox1.Margin = new System.Windows.Forms.Padding(6); this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(338, 358); + this.groupBox1.Padding = new System.Windows.Forms.Padding(6); + this.groupBox1.Size = new System.Drawing.Size(676, 739); this.groupBox1.TabIndex = 22; this.groupBox1.TabStop = false; this.groupBox1.Text = "Comparison Options"; // + // chkRetainRefreshPolicy + // + this.chkRetainRefreshPolicy.AutoSize = true; + this.chkRetainRefreshPolicy.Location = new System.Drawing.Point(28, 552); + this.chkRetainRefreshPolicy.Margin = new System.Windows.Forms.Padding(6); + this.chkRetainRefreshPolicy.Name = "chkRetainRefreshPolicy"; + this.chkRetainRefreshPolicy.Size = new System.Drawing.Size(413, 29); + this.chkRetainRefreshPolicy.TabIndex = 15; + this.chkRetainRefreshPolicy.Text = "For table updates, retain refresh policy"; + this.chkRetainRefreshPolicy.UseVisualStyleBackColor = true; + // + // chkRetainRoleMembers + // + this.chkRetainRoleMembers.AutoSize = true; + this.chkRetainRoleMembers.Checked = true; + this.chkRetainRoleMembers.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkRetainRoleMembers.Location = new System.Drawing.Point(68, 277); + this.chkRetainRoleMembers.Margin = new System.Windows.Forms.Padding(6); + this.chkRetainRoleMembers.Name = "chkRetainRoleMembers"; + this.chkRetainRoleMembers.Size = new System.Drawing.Size(361, 29); + this.chkRetainRoleMembers.TabIndex = 14; + this.chkRetainRoleMembers.Text = "For role updates, retain members"; + this.chkRetainRoleMembers.UseVisualStyleBackColor = true; + // // chkLineageTag // this.chkLineageTag.AutoSize = true; - this.chkLineageTag.Location = new System.Drawing.Point(14, 203); + this.chkLineageTag.Location = new System.Drawing.Point(28, 390); + this.chkLineageTag.Margin = new System.Windows.Forms.Padding(6); this.chkLineageTag.Name = "chkLineageTag"; - this.chkLineageTag.Size = new System.Drawing.Size(208, 17); + this.chkLineageTag.Size = new System.Drawing.Size(413, 29); this.chkLineageTag.TabIndex = 13; this.chkLineageTag.Text = "Consider LineageTag when comparing"; this.chkLineageTag.UseVisualStyleBackColor = true; @@ -159,9 +194,10 @@ // chkRetainStorageMode // this.chkRetainStorageMode.AutoSize = true; - this.chkRetainStorageMode.Location = new System.Drawing.Point(14, 285); + this.chkRetainStorageMode.Location = new System.Drawing.Point(28, 605); + this.chkRetainStorageMode.Margin = new System.Windows.Forms.Padding(6); this.chkRetainStorageMode.Name = "chkRetainStorageMode"; - this.chkRetainStorageMode.Size = new System.Drawing.Size(207, 17); + this.chkRetainStorageMode.Size = new System.Drawing.Size(415, 29); this.chkRetainStorageMode.TabIndex = 12; this.chkRetainStorageMode.Text = "For table updates, retain storage mode"; this.chkRetainStorageMode.UseVisualStyleBackColor = true; @@ -170,9 +206,10 @@ // this.chkRetainPolicyPartitions.AutoSize = true; this.chkRetainPolicyPartitions.Enabled = false; - this.chkRetainPolicyPartitions.Location = new System.Drawing.Point(34, 256); + this.chkRetainPolicyPartitions.Location = new System.Drawing.Point(68, 492); + this.chkRetainPolicyPartitions.Margin = new System.Windows.Forms.Padding(6); this.chkRetainPolicyPartitions.Name = "chkRetainPolicyPartitions"; - this.chkRetainPolicyPartitions.Size = new System.Drawing.Size(221, 17); + this.chkRetainPolicyPartitions.Size = new System.Drawing.Size(447, 29); this.chkRetainPolicyPartitions.TabIndex = 11; this.chkRetainPolicyPartitions.Text = "Retain only refresh-policy based partitions"; this.chkRetainPolicyPartitions.UseVisualStyleBackColor = true; @@ -180,9 +217,10 @@ // chkRetainPartitions // this.chkRetainPartitions.AutoSize = true; - this.chkRetainPartitions.Location = new System.Drawing.Point(14, 235); + this.chkRetainPartitions.Location = new System.Drawing.Point(28, 452); + this.chkRetainPartitions.Margin = new System.Windows.Forms.Padding(6); this.chkRetainPartitions.Name = "chkRetainPartitions"; - this.chkRetainPartitions.Size = new System.Drawing.Size(185, 17); + this.chkRetainPartitions.Size = new System.Drawing.Size(372, 29); this.chkRetainPartitions.TabIndex = 10; this.chkRetainPartitions.Text = "For table updates, retain partitions"; this.chkRetainPartitions.UseVisualStyleBackColor = true; @@ -192,9 +230,10 @@ // this.chkMergeCultures.AutoSize = true; this.chkMergeCultures.Enabled = false; - this.chkMergeCultures.Location = new System.Drawing.Point(34, 96); + this.chkMergeCultures.Location = new System.Drawing.Point(68, 185); + this.chkMergeCultures.Margin = new System.Windows.Forms.Padding(6); this.chkMergeCultures.Name = "chkMergeCultures"; - this.chkMergeCultures.Size = new System.Drawing.Size(270, 17); + this.chkMergeCultures.Size = new System.Drawing.Size(546, 29); this.chkMergeCultures.TabIndex = 9; this.chkMergeCultures.Text = "For culture updates, merge translations (not replace)"; this.chkMergeCultures.UseVisualStyleBackColor = true; @@ -202,9 +241,10 @@ // chkCultures // this.chkCultures.AutoSize = true; - this.chkCultures.Location = new System.Drawing.Point(14, 75); + this.chkCultures.Location = new System.Drawing.Point(28, 144); + this.chkCultures.Margin = new System.Windows.Forms.Padding(6); this.chkCultures.Name = "chkCultures"; - this.chkCultures.Size = new System.Drawing.Size(101, 17); + this.chkCultures.Size = new System.Drawing.Size(195, 29); this.chkCultures.TabIndex = 8; this.chkCultures.Text = "Include cultures"; this.chkCultures.UseVisualStyleBackColor = true; @@ -214,9 +254,10 @@ // this.chkMergePerspectives.AutoSize = true; this.chkMergePerspectives.Enabled = false; - this.chkMergePerspectives.Location = new System.Drawing.Point(34, 46); + this.chkMergePerspectives.Location = new System.Drawing.Point(68, 88); + this.chkMergePerspectives.Margin = new System.Windows.Forms.Padding(6); this.chkMergePerspectives.Name = "chkMergePerspectives"; - this.chkMergePerspectives.Size = new System.Drawing.Size(287, 17); + this.chkMergePerspectives.Size = new System.Drawing.Size(578, 29); this.chkMergePerspectives.TabIndex = 4; this.chkMergePerspectives.Text = "For perspective updates, merge selections (not replace)"; this.chkMergePerspectives.UseVisualStyleBackColor = true; @@ -228,9 +269,11 @@ this.groupBox2.Controls.Add(this.chkAffectedTables); this.groupBox2.Controls.Add(this.cboProcessingOption); this.groupBox2.Controls.Add(this.label1); - this.groupBox2.Location = new System.Drawing.Point(12, 376); + this.groupBox2.Location = new System.Drawing.Point(24, 774); + this.groupBox2.Margin = new System.Windows.Forms.Padding(6); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(338, 101); + this.groupBox2.Padding = new System.Windows.Forms.Padding(6); + this.groupBox2.Size = new System.Drawing.Size(676, 194); this.groupBox2.TabIndex = 23; this.groupBox2.TabStop = false; this.groupBox2.Text = "Database Deployment"; @@ -240,9 +283,10 @@ this.chkAffectedTables.AutoSize = true; this.chkAffectedTables.Checked = true; this.chkAffectedTables.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkAffectedTables.Location = new System.Drawing.Point(14, 63); + this.chkAffectedTables.Location = new System.Drawing.Point(28, 121); + this.chkAffectedTables.Margin = new System.Windows.Forms.Padding(6); this.chkAffectedTables.Name = "chkAffectedTables"; - this.chkAffectedTables.Size = new System.Drawing.Size(159, 17); + this.chkAffectedTables.Size = new System.Drawing.Size(315, 29); this.chkAffectedTables.TabIndex = 9; this.chkAffectedTables.Text = "Process only affected tables"; this.chkAffectedTables.UseVisualStyleBackColor = true; @@ -257,44 +301,35 @@ "Default", "Do Not Process", "Full"}); - this.cboProcessingOption.Location = new System.Drawing.Point(114, 24); + this.cboProcessingOption.Location = new System.Drawing.Point(228, 46); + this.cboProcessingOption.Margin = new System.Windows.Forms.Padding(6); this.cboProcessingOption.Name = "cboProcessingOption"; - this.cboProcessingOption.Size = new System.Drawing.Size(131, 21); + this.cboProcessingOption.Size = new System.Drawing.Size(258, 33); this.cboProcessingOption.TabIndex = 8; // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 28); + this.label1.Location = new System.Drawing.Point(24, 54); + this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 6, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(96, 13); + this.label1.Size = new System.Drawing.Size(194, 25); this.label1.TabIndex = 0; this.label1.Text = "Processing Option:"; // - // chkRetainRoleMembers - // - this.chkRetainRoleMembers.AutoSize = true; - this.chkRetainRoleMembers.Checked = true; - this.chkRetainRoleMembers.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkRetainRoleMembers.Location = new System.Drawing.Point(34, 144); - this.chkRetainRoleMembers.Name = "chkRetainRoleMembers"; - this.chkRetainRoleMembers.Size = new System.Drawing.Size(179, 17); - this.chkRetainRoleMembers.TabIndex = 14; - this.chkRetainRoleMembers.Text = "For role updates, retain members"; - this.chkRetainRoleMembers.UseVisualStyleBackColor = true; - // // Options // this.AcceptButton = this.btnOK; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 25F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.CancelButton = this.btnCancel; - this.ClientSize = new System.Drawing.Size(362, 528); + this.ClientSize = new System.Drawing.Size(724, 1066); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOK); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Margin = new System.Windows.Forms.Padding(6); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "Options"; @@ -332,5 +367,6 @@ private System.Windows.Forms.CheckBox chkRetainStorageMode; private System.Windows.Forms.CheckBox chkLineageTag; private System.Windows.Forms.CheckBox chkRetainRoleMembers; + private System.Windows.Forms.CheckBox chkRetainRefreshPolicy; } } \ No newline at end of file diff --git a/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.cs b/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.cs index 22426a6..849597f 100644 --- a/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.cs +++ b/BismNormalizer/BismNormalizer/TabularCompare/UI/Options.cs @@ -53,6 +53,7 @@ namespace BismNormalizer.TabularCompare.UI chkLineageTag.Checked = _comparisonInfo.OptionsInfo.OptionLineageTag; chkRetainPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPartitions; chkRetainPolicyPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions; + chkRetainRefreshPolicy.Checked = _comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy; chkRetainStorageMode.Checked = _comparisonInfo.OptionsInfo.OptionRetainStorageMode; chkMeasureDependencies.Checked = _comparisonInfo.OptionsInfo.OptionMeasureDependencies; string processingOption = _comparisonInfo.OptionsInfo.OptionProcessingOption.ToString(); @@ -73,6 +74,7 @@ namespace BismNormalizer.TabularCompare.UI _comparisonInfo.OptionsInfo.OptionLineageTag = chkLineageTag.Checked; _comparisonInfo.OptionsInfo.OptionRetainPartitions = chkRetainPartitions.Checked; _comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions = chkRetainPolicyPartitions.Checked; + _comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy = chkRetainRefreshPolicy.Checked; _comparisonInfo.OptionsInfo.OptionRetainStorageMode = chkRetainStorageMode.Checked; _comparisonInfo.OptionsInfo.OptionMeasureDependencies = chkMeasureDependencies.Checked; _comparisonInfo.OptionsInfo.OptionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), cboProcessingOption.Text.Replace(" ", "")); diff --git a/BismNormalizer/BismNormalizer/app.config b/BismNormalizer/BismNormalizer/app.config index 4dbefdf..21cacd0 100644 --- a/BismNormalizer/BismNormalizer/app.config +++ b/BismNormalizer/BismNormalizer/app.config @@ -94,6 +94,9 @@ False + + False +