Option "For table updates, retain refresh policy"

This commit is contained in:
Christian Wade 2021-11-19 21:44:00 -08:00
parent 44825fc694
commit 1dcbd0d4e5
8 changed files with 172 additions and 66 deletions

View File

@ -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;
}
}
}
}

View File

@ -89,5 +89,8 @@
<Setting Name="OptionRetainRoleMembers" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="OptionRetainRefreshPolicy" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -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; }
}
/// <summary>
/// A Boolean specifying whether to retain incremental refresh policy.
/// </summary>
public bool OptionRetainRefreshPolicy
{
get { return _optionRetainRefreshPolicy; }
set { _optionRetainRefreshPolicy = value; }
}
/// <summary>
/// A Boolean specifying whether to retain storage for table updates on composite models.
/// </summary>
@ -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();

View File

@ -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<string> warningObjectList = new List<string>();
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,10 +1669,22 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{
return;
};
//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
{
if (!nonStructuredDataSourceLocal)

View File

@ -639,7 +639,12 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
/// <param name="tableTarget">Table object in the target tabular model to be updated.</param>
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<SingleColumnRelationship> 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;
}

View File

@ -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;
}
}

View File

@ -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(" ", ""));

View File

@ -94,6 +94,9 @@
<setting name="OptionRetainRoleMembers" serializeAs="String">
<value>False</value>
</setting>
<setting name="OptionRetainRefreshPolicy" serializeAs="String">
<value>False</value>
</setting>
</BismNormalizer.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>