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; 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"> <Setting Name="OptionRetainRoleMembers" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value> <Value Profile="(Default)">False</Value>
</Setting> </Setting>
<Setting Name="OptionRetainRefreshPolicy" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
</Settings> </Settings>
</SettingsFile> </SettingsFile>

View File

@ -23,6 +23,7 @@ namespace BismNormalizer.TabularCompare
private bool _optionLineageTag; private bool _optionLineageTag;
private bool _optionRetainPartitions; private bool _optionRetainPartitions;
private bool _optionRetainPolicyPartitions; private bool _optionRetainPolicyPartitions;
private bool _optionRetainRefreshPolicy;
private bool _optionRetainStorageMode; private bool _optionRetainStorageMode;
private bool _optionMeasureDependencies; private bool _optionMeasureDependencies;
private ProcessingOption _optionProcessingOption; private ProcessingOption _optionProcessingOption;
@ -45,6 +46,7 @@ namespace BismNormalizer.TabularCompare
_optionLineageTag = Settings.Default.OptionLineageTag; _optionLineageTag = Settings.Default.OptionLineageTag;
_optionRetainPartitions = Settings.Default.OptionRetainPartitions; _optionRetainPartitions = Settings.Default.OptionRetainPartitions;
_optionRetainPolicyPartitions = Settings.Default.OptionRetainPolicyPartitions; _optionRetainPolicyPartitions = Settings.Default.OptionRetainPolicyPartitions;
_optionRetainRefreshPolicy = Settings.Default.OptionRetainRefreshPolicy;
_optionRetainStorageMode = Settings.Default.OptionRetainStorageMode; _optionRetainStorageMode = Settings.Default.OptionRetainStorageMode;
_optionMeasureDependencies = Settings.Default.OptionMeasureDependencies; _optionMeasureDependencies = Settings.Default.OptionMeasureDependencies;
_optionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), Settings.Default.OptionProcessingOption); _optionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), Settings.Default.OptionProcessingOption);
@ -149,6 +151,15 @@ namespace BismNormalizer.TabularCompare
set { _optionRetainPolicyPartitions = value; } set { _optionRetainPolicyPartitions = value; }
} }
/// <summary>
/// A Boolean specifying whether to retain incremental refresh policy.
/// </summary>
public bool OptionRetainRefreshPolicy
{
get { return _optionRetainRefreshPolicy; }
set { _optionRetainRefreshPolicy = value; }
}
/// <summary> /// <summary>
/// A Boolean specifying whether to retain storage for table updates on composite models. /// A Boolean specifying whether to retain storage for table updates on composite models.
/// </summary> /// </summary>
@ -212,6 +223,7 @@ namespace BismNormalizer.TabularCompare
Settings.Default.OptionLineageTag = _optionLineageTag; Settings.Default.OptionLineageTag = _optionLineageTag;
Settings.Default.OptionRetainPartitions = _optionRetainPartitions; Settings.Default.OptionRetainPartitions = _optionRetainPartitions;
Settings.Default.OptionRetainPolicyPartitions = _optionRetainPolicyPartitions; Settings.Default.OptionRetainPolicyPartitions = _optionRetainPolicyPartitions;
Settings.Default.OptionRetainRefreshPolicy = _optionRetainRefreshPolicy;
Settings.Default.OptionRetainStorageMode = _optionRetainStorageMode; Settings.Default.OptionRetainStorageMode = _optionRetainStorageMode;
Settings.Default.OptionMeasureDependencies = _optionMeasureDependencies; Settings.Default.OptionMeasureDependencies = _optionMeasureDependencies;
Settings.Default.OptionProcessingOption = _optionProcessingOption.ToString(); 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). _targetTabularModel.CanRetainPartitions( //But also check if doing retain partitions on this table (if so, dependency will remain).
_sourceTabularModel.Tables.FindByName(comparisonObjectToCheck.TargetObjectName), _sourceTabularModel.Tables.FindByName(comparisonObjectToCheck.TargetObjectName),
_targetTabularModel.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. ) //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>(); List<string> warningObjectList = new List<string>();
bool fromDependencies = false; bool fromDependencies = false;
bool nonStructuredDataSourceLocal = 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). //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 //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) foreach (Partition partition in tableSource.TomTable.Partitions)
@ -1661,8 +1669,20 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{ {
return; 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 else

View File

@ -639,7 +639,12 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
/// <param name="tableTarget">Table object in the target tabular model to be updated.</param> /// <param name="tableTarget">Table object in the target tabular model to be updated.</param>
public void UpdateTable(Table tableSource, Table tableTarget, out string retainPartitionsMessage) 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(); Tom.Table tomTableTargetOrig = tableTarget.TomTable.Clone();
ModeType tableTargetModeType = tableTarget.TableModeType; ModeType tableTargetModeType = tableTarget.TableModeType;
List<SingleColumnRelationship> tomRelationshipsToAddBack = DeleteTable(tableTarget.Name); List<SingleColumnRelationship> tomRelationshipsToAddBack = DeleteTable(tableTarget.Name);
@ -690,48 +695,61 @@ namespace BismNormalizer.TabularCompare.TabularMetadata
{ {
tableTarget.ResetStorageMode(tableTargetModeType); 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 //Initialize variables
retainPartitionsMessage = ""; retainPartitionsMessage = "";
PartitionSourceType sourceTypeSource = PartitionSourceType.None; partitionSourceTypeSource = PartitionSourceType.None;
foreach (Partition partition in tableSource.TomTable.Partitions) foreach (Partition partition in tableSource.TomTable.Partitions)
{ {
sourceTypeSource = partition.SourceType; partitionSourceTypeSource = partition.SourceType;
break; break;
} }
PartitionSourceType sourceTypeTarget = PartitionSourceType.None; partitionSourceTypeTarget = PartitionSourceType.None;
foreach (Partition partitionTarget in tableTarget.TomTable.Partitions) foreach (Partition partitionTarget in tableTarget.TomTable.Partitions)
{ {
sourceTypeTarget = partitionTarget.SourceType; partitionSourceTypeTarget = partitionTarget.SourceType;
break; break;
} }
//Verify necessary options are checked //Verify necessary options are checked
if (!_comparisonInfo.OptionsInfo.OptionRetainPartitions) if (!_comparisonInfo.OptionsInfo.OptionRetainPartitions)
return false; return false;
if (_comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions && sourceTypeTarget != PartitionSourceType.PolicyRange) if (_comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions && partitionSourceTypeTarget != PartitionSourceType.PolicyRange)
return false; 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. //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."; retainPartitionsMessage = $"Retain partitions not applicable to partition types.";
return false; 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."; retainPartitionsMessage = $"Retain partitions not applicable to partition types.";
return false; 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; return false;
} }

View File

@ -35,6 +35,8 @@
this.chkMeasureDependencies = new System.Windows.Forms.CheckBox(); this.chkMeasureDependencies = new System.Windows.Forms.CheckBox();
this.chkPerspectives = new System.Windows.Forms.CheckBox(); this.chkPerspectives = new System.Windows.Forms.CheckBox();
this.groupBox1 = new System.Windows.Forms.GroupBox(); 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.chkLineageTag = new System.Windows.Forms.CheckBox();
this.chkRetainStorageMode = new System.Windows.Forms.CheckBox(); this.chkRetainStorageMode = new System.Windows.Forms.CheckBox();
this.chkRetainPolicyPartitions = new System.Windows.Forms.CheckBox(); this.chkRetainPolicyPartitions = new System.Windows.Forms.CheckBox();
@ -46,7 +48,6 @@
this.chkAffectedTables = new System.Windows.Forms.CheckBox(); this.chkAffectedTables = new System.Windows.Forms.CheckBox();
this.cboProcessingOption = new System.Windows.Forms.ComboBox(); this.cboProcessingOption = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label();
this.chkRetainRoleMembers = new System.Windows.Forms.CheckBox();
this.groupBox1.SuspendLayout(); this.groupBox1.SuspendLayout();
this.groupBox2.SuspendLayout(); this.groupBox2.SuspendLayout();
this.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.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.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.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.TabIndex = 21;
this.btnCancel.Text = "Cancel"; this.btnCancel.Text = "Cancel";
this.btnCancel.UseVisualStyleBackColor = true; 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.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.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.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.TabIndex = 20;
this.btnOK.Text = "OK"; this.btnOK.Text = "OK";
this.btnOK.UseVisualStyleBackColor = true; this.btnOK.UseVisualStyleBackColor = true;
@ -79,9 +82,10 @@
this.chkRoles.AutoSize = true; this.chkRoles.AutoSize = true;
this.chkRoles.Checked = true; this.chkRoles.Checked = true;
this.chkRoles.CheckState = System.Windows.Forms.CheckState.Checked; 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.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.TabIndex = 5;
this.chkRoles.Text = "Include roles"; this.chkRoles.Text = "Include roles";
this.chkRoles.UseVisualStyleBackColor = true; this.chkRoles.UseVisualStyleBackColor = true;
@ -90,9 +94,10 @@
// chkPartitions // chkPartitions
// //
this.chkPartitions.AutoSize = true; 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.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.TabIndex = 6;
this.chkPartitions.Text = "Consider partitions when comparing tables"; this.chkPartitions.Text = "Consider partitions when comparing tables";
this.chkPartitions.UseVisualStyleBackColor = true; this.chkPartitions.UseVisualStyleBackColor = true;
@ -104,9 +109,10 @@
this.chkMeasureDependencies.AutoSize = true; this.chkMeasureDependencies.AutoSize = true;
this.chkMeasureDependencies.Checked = true; this.chkMeasureDependencies.Checked = true;
this.chkMeasureDependencies.CheckState = System.Windows.Forms.CheckState.Checked; 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.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.TabIndex = 7;
this.chkMeasureDependencies.Text = "XXX"; this.chkMeasureDependencies.Text = "XXX";
this.chkMeasureDependencies.UseVisualStyleBackColor = true; this.chkMeasureDependencies.UseVisualStyleBackColor = true;
@ -114,9 +120,10 @@
// chkPerspectives // chkPerspectives
// //
this.chkPerspectives.AutoSize = true; 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.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.TabIndex = 3;
this.chkPerspectives.Text = "Include perspectives"; this.chkPerspectives.Text = "Include perspectives";
this.chkPerspectives.UseVisualStyleBackColor = true; 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) 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.Left)
| System.Windows.Forms.AnchorStyles.Right))); | System.Windows.Forms.AnchorStyles.Right)));
this.groupBox1.Controls.Add(this.chkRetainRefreshPolicy);
this.groupBox1.Controls.Add(this.chkRetainRoleMembers); this.groupBox1.Controls.Add(this.chkRetainRoleMembers);
this.groupBox1.Controls.Add(this.chkLineageTag); this.groupBox1.Controls.Add(this.chkLineageTag);
this.groupBox1.Controls.Add(this.chkRetainStorageMode); this.groupBox1.Controls.Add(this.chkRetainStorageMode);
@ -139,19 +147,46 @@
this.groupBox1.Controls.Add(this.chkMeasureDependencies); this.groupBox1.Controls.Add(this.chkMeasureDependencies);
this.groupBox1.Controls.Add(this.chkPartitions); this.groupBox1.Controls.Add(this.chkPartitions);
this.groupBox1.Controls.Add(this.chkRoles); 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.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.TabIndex = 22;
this.groupBox1.TabStop = false; this.groupBox1.TabStop = false;
this.groupBox1.Text = "Comparison Options"; 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 // chkLineageTag
// //
this.chkLineageTag.AutoSize = true; 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.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.TabIndex = 13;
this.chkLineageTag.Text = "Consider LineageTag when comparing"; this.chkLineageTag.Text = "Consider LineageTag when comparing";
this.chkLineageTag.UseVisualStyleBackColor = true; this.chkLineageTag.UseVisualStyleBackColor = true;
@ -159,9 +194,10 @@
// chkRetainStorageMode // chkRetainStorageMode
// //
this.chkRetainStorageMode.AutoSize = true; 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.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.TabIndex = 12;
this.chkRetainStorageMode.Text = "For table updates, retain storage mode"; this.chkRetainStorageMode.Text = "For table updates, retain storage mode";
this.chkRetainStorageMode.UseVisualStyleBackColor = true; this.chkRetainStorageMode.UseVisualStyleBackColor = true;
@ -170,9 +206,10 @@
// //
this.chkRetainPolicyPartitions.AutoSize = true; this.chkRetainPolicyPartitions.AutoSize = true;
this.chkRetainPolicyPartitions.Enabled = false; 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.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.TabIndex = 11;
this.chkRetainPolicyPartitions.Text = "Retain only refresh-policy based partitions"; this.chkRetainPolicyPartitions.Text = "Retain only refresh-policy based partitions";
this.chkRetainPolicyPartitions.UseVisualStyleBackColor = true; this.chkRetainPolicyPartitions.UseVisualStyleBackColor = true;
@ -180,9 +217,10 @@
// chkRetainPartitions // chkRetainPartitions
// //
this.chkRetainPartitions.AutoSize = true; 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.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.TabIndex = 10;
this.chkRetainPartitions.Text = "For table updates, retain partitions"; this.chkRetainPartitions.Text = "For table updates, retain partitions";
this.chkRetainPartitions.UseVisualStyleBackColor = true; this.chkRetainPartitions.UseVisualStyleBackColor = true;
@ -192,9 +230,10 @@
// //
this.chkMergeCultures.AutoSize = true; this.chkMergeCultures.AutoSize = true;
this.chkMergeCultures.Enabled = false; 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.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.TabIndex = 9;
this.chkMergeCultures.Text = "For culture updates, merge translations (not replace)"; this.chkMergeCultures.Text = "For culture updates, merge translations (not replace)";
this.chkMergeCultures.UseVisualStyleBackColor = true; this.chkMergeCultures.UseVisualStyleBackColor = true;
@ -202,9 +241,10 @@
// chkCultures // chkCultures
// //
this.chkCultures.AutoSize = true; 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.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.TabIndex = 8;
this.chkCultures.Text = "Include cultures"; this.chkCultures.Text = "Include cultures";
this.chkCultures.UseVisualStyleBackColor = true; this.chkCultures.UseVisualStyleBackColor = true;
@ -214,9 +254,10 @@
// //
this.chkMergePerspectives.AutoSize = true; this.chkMergePerspectives.AutoSize = true;
this.chkMergePerspectives.Enabled = false; 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.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.TabIndex = 4;
this.chkMergePerspectives.Text = "For perspective updates, merge selections (not replace)"; this.chkMergePerspectives.Text = "For perspective updates, merge selections (not replace)";
this.chkMergePerspectives.UseVisualStyleBackColor = true; this.chkMergePerspectives.UseVisualStyleBackColor = true;
@ -228,9 +269,11 @@
this.groupBox2.Controls.Add(this.chkAffectedTables); this.groupBox2.Controls.Add(this.chkAffectedTables);
this.groupBox2.Controls.Add(this.cboProcessingOption); this.groupBox2.Controls.Add(this.cboProcessingOption);
this.groupBox2.Controls.Add(this.label1); 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.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.TabIndex = 23;
this.groupBox2.TabStop = false; this.groupBox2.TabStop = false;
this.groupBox2.Text = "Database Deployment"; this.groupBox2.Text = "Database Deployment";
@ -240,9 +283,10 @@
this.chkAffectedTables.AutoSize = true; this.chkAffectedTables.AutoSize = true;
this.chkAffectedTables.Checked = true; this.chkAffectedTables.Checked = true;
this.chkAffectedTables.CheckState = System.Windows.Forms.CheckState.Checked; 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.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.TabIndex = 9;
this.chkAffectedTables.Text = "Process only affected tables"; this.chkAffectedTables.Text = "Process only affected tables";
this.chkAffectedTables.UseVisualStyleBackColor = true; this.chkAffectedTables.UseVisualStyleBackColor = true;
@ -257,44 +301,35 @@
"Default", "Default",
"Do Not Process", "Do Not Process",
"Full"}); "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.Name = "cboProcessingOption";
this.cboProcessingOption.Size = new System.Drawing.Size(131, 21); this.cboProcessingOption.Size = new System.Drawing.Size(258, 33);
this.cboProcessingOption.TabIndex = 8; this.cboProcessingOption.TabIndex = 8;
// //
// label1 // label1
// //
this.label1.AutoSize = true; 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.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.TabIndex = 0;
this.label1.Text = "Processing Option:"; 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 // Options
// //
this.AcceptButton = this.btnOK; 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.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btnCancel; 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.groupBox2);
this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox1);
this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnCancel);
this.Controls.Add(this.btnOK); this.Controls.Add(this.btnOK);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.Margin = new System.Windows.Forms.Padding(6);
this.MaximizeBox = false; this.MaximizeBox = false;
this.MinimizeBox = false; this.MinimizeBox = false;
this.Name = "Options"; this.Name = "Options";
@ -332,5 +367,6 @@
private System.Windows.Forms.CheckBox chkRetainStorageMode; private System.Windows.Forms.CheckBox chkRetainStorageMode;
private System.Windows.Forms.CheckBox chkLineageTag; private System.Windows.Forms.CheckBox chkLineageTag;
private System.Windows.Forms.CheckBox chkRetainRoleMembers; 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; chkLineageTag.Checked = _comparisonInfo.OptionsInfo.OptionLineageTag;
chkRetainPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPartitions; chkRetainPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPartitions;
chkRetainPolicyPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions; chkRetainPolicyPartitions.Checked = _comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions;
chkRetainRefreshPolicy.Checked = _comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy;
chkRetainStorageMode.Checked = _comparisonInfo.OptionsInfo.OptionRetainStorageMode; chkRetainStorageMode.Checked = _comparisonInfo.OptionsInfo.OptionRetainStorageMode;
chkMeasureDependencies.Checked = _comparisonInfo.OptionsInfo.OptionMeasureDependencies; chkMeasureDependencies.Checked = _comparisonInfo.OptionsInfo.OptionMeasureDependencies;
string processingOption = _comparisonInfo.OptionsInfo.OptionProcessingOption.ToString(); string processingOption = _comparisonInfo.OptionsInfo.OptionProcessingOption.ToString();
@ -73,6 +74,7 @@ namespace BismNormalizer.TabularCompare.UI
_comparisonInfo.OptionsInfo.OptionLineageTag = chkLineageTag.Checked; _comparisonInfo.OptionsInfo.OptionLineageTag = chkLineageTag.Checked;
_comparisonInfo.OptionsInfo.OptionRetainPartitions = chkRetainPartitions.Checked; _comparisonInfo.OptionsInfo.OptionRetainPartitions = chkRetainPartitions.Checked;
_comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions = chkRetainPolicyPartitions.Checked; _comparisonInfo.OptionsInfo.OptionRetainPolicyPartitions = chkRetainPolicyPartitions.Checked;
_comparisonInfo.OptionsInfo.OptionRetainRefreshPolicy = chkRetainRefreshPolicy.Checked;
_comparisonInfo.OptionsInfo.OptionRetainStorageMode = chkRetainStorageMode.Checked; _comparisonInfo.OptionsInfo.OptionRetainStorageMode = chkRetainStorageMode.Checked;
_comparisonInfo.OptionsInfo.OptionMeasureDependencies = chkMeasureDependencies.Checked; _comparisonInfo.OptionsInfo.OptionMeasureDependencies = chkMeasureDependencies.Checked;
_comparisonInfo.OptionsInfo.OptionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), cboProcessingOption.Text.Replace(" ", "")); _comparisonInfo.OptionsInfo.OptionProcessingOption = (ProcessingOption)Enum.Parse(typeof(ProcessingOption), cboProcessingOption.Text.Replace(" ", ""));

View File

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